Рассмотрена установка openvpn на Centos 7. Вариант соединения клиент — интернет сервер. Чаще всего применяется для того чтобы сменить ip адрес в интернете, или допустим у вас динамический ip, а вам нужно сделать его статическим.
Настройка сервера openvpn Centos 7:
Официальная страница openvpn
Подключаем репозитарий epel
yum install epel-release
Устанавливаем openvpn и Easy-RSA
yum -y install openvpn yum -y install easy-rsa
В директории для документации OpenVPN содержатся файлы для тестовой конфигурации программ. Скопируем в папку с openvpn и отредактируем конфигурационный файл. На момент написания статьи версия openvpn-2.4.1 — убедитесь в своей версии, ссылка и путь скорее всего будут уже другие, или просто поэтапно пройдите по пути нажимая первые буквы категорий и нажимая TAB.
cp /usr/share/doc/openvpn-2.4.1/sample/sample-config-files/server.conf /etc/openvpn/
Редактируем server.conf
vi /etc/openvpn/server.conf
Убираем комментарий «#» со строки где хранятся файлы клиента
client-config-dir ccd
Изменить строку на следующую. Если эта строка закомментирована то будет просто подключение к VPN серверу а трафик будет идти в обход VPN. У вас будет интернет но не будет через шлюз.
push "redirect-gateway def1 bypass-dhcp"
Уберем «;» и заменим ip в строках push «dhcp-option DNS 208.67.222.222» и push «dhcp-option DNS 208.67.220.220» на сервера google
push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 4.4.4.4"
Убираем привилегии для openvpn. Удалить «;» для строк
user nobody group nobody
Полная настройка конфигурационного файла сервера VPN /etc/openvpn/server.conf
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh2048.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt client-config-dir ccd push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 4.4.4.4" keepalive 10 120 tls-auth ta.key 0 cipher AES-256-CBC user nobody group nobody persist-key persist-tun status openvpn-status.log verb 3 explicit-exit-notify 1
Создаем ключи VPN
Создаем папку где будут храниться ключи
mkdir -p /etc/openvpn/easy-rsa/keys
Копируем скрипты для генерации сертификатов
cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
Меняем содержание. Чтобы каждый раз при генерации не вводить одни и те же значения.
vi /etc/openvpn/easy-rsa/vars
Меняем на свои значения
export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="me@myhost.mydomain" export KEY_OU="MyOrganizationalUnit" ... export KEY_NAME="EasyRSA" ... export KEY_CN="CommonName"
Убираем невозможность из-за не определения версии программы
cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
Далее
cd /etc/openvpn/easy-rsa/ source ./vars ./clean-all
Вводим организацию выдавшую сертификат, на вопросы просто жмем enter, ответы уже введены в vars
./build-ca
Генерируем ключ и сертификат для сервера server и запускаем генератор DH
./build-key-server server ./build-dh openvpn --genkey --secret keys/ta.key
Копируем ключи в конфигурационную папку openvpn
cd /etc/openvpn/easy-rsa/keys/ cp dh2048.pem ca.crt server.crt server.key ta.key /etc/openvpn/
Создаем клиента
cd /etc/openvpn/easy-rsa/ ./build-key client
Устанавливаем iptables
yum install iptables-services -y
Возможно у вас уже отключен selinux.
Отключаем selinux
mcedit /etc/sysconfig/selinux
SELINUX=disabled
Включение и выключение соответственных файрволов.
systemctl mask firewalld systemctl stop firwalld systemctl enable iptables systemctl start iptables
Сброс правил файрола iptables
iptables --flush
Создаем правило чтобы соединения маршрутизировались нашей подсетью openvpn
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE iptables-save > /etc/sysconfig/iptables
Активируем форвардинг
vi /etc/sysctl.conf
Добавить
net.ipv4.ip_forward=1
Перезапускаем сетевой сервис
systemctl restart network.service
Проверяем применялись ли изменения, если 1 значит применялись
cat /proc/sys/net/ipv4/ip_forward
Всё готово для запуска OpenVPN на стороне сервера, добавляем его в systemctl
systemctl -f enable openvpn@server.service
Настройка клиента openvpn Centos 7:
Устанавлвиваем клиент OpenVPN, скачать можно тут. После установки OpenVPN скачиваем файлы ca.crt client.crt client.key ta.key с папки /etc/openvpn/easy-rsa/keys/ в папку машины с которой планируем подключаться C:\Program Files\OpenVPN\config\ и создаем в ней файл clientfirst.ovpn например, но лучше не просто client.ovpn потому что VPN клиент уже содержит пример подключения в папке C:\Program Files\OpenVPN\sample-config\
Строку «ЗДЕСЬ IP ВАШЕГО СЕРВЕРА» замените ip адресом вашего VDS/VPS или сервера.
client dev tun proto udp remote ЗДЕСЬ IP ВАШЕГО СЕРВЕРА 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client.crt key client.key remote-cert-tls server tls-auth ta.key 1 cipher AES-256-CBC verb 3
Запускаем OpenVPN, работаем.
Некоторые заметки:
tls-auth ta.key 0 — На стороне сервера tls-auth ta.key 1 — На стороне клиента.
Возможно в какой-то момент пропущена необходимость перезагрузки сервера. Бывает еще какая-то ошибка из-за несоответствия времени.
Если вам нужно просто сменить ip адрес в браузере то можете рассмотреть эту статью:
прокcи сервер centos 7