Автор настоятельно рекомендует прежде всего, обратить внимание на актуальную версию статьи, где OpenVPN настраивается на сервере с Fedora.
Однако, если для читателя критично использовать постепенно устаревающий материал…
Это просто ещё одна инструкция по настройке OpenVPN сервера. Допустим что у нас уже есть VDS простой конфигурации (512mb памяти и т. п.). На нём установлена CentOS 6 или CentOS 7 и на него же мы будем ставить наш VPN сервер.
Настраиваем OpenVPN сервер.
1. Приступаем.
Ставим необходимые пакеты и проводим первичные приготовления.
Для CentOS 6:
# yum install epel-release # yum install openvpn easy-rsa # mkdir -p /etc/openvpn/easy-rsa/keys # cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa/ # cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
Для CentOS 7:
# yum install wget epel-release # yum install openvpn # cd /usr/local/src/ # wget https://github.com/OpenVPN/easy-rsa-old/archive/2.3.3.tar.gz # tar xvfz 2.3.3.tar.gz # mkdir -p /etc/openvpn/easy-rsa/keys # cp -arvp /usr/local/src/easy-rsa-old-2.3.3/easy-rsa/2.0/* /etc/openvpn/easy-rsa/ # cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
2. Готовим окружение.
Открываем файл /etc/openvpn/easy-rsa/vars и при необходимости изменяем в нём следующие строки:
export KEY_COUNTRY="RU" export KEY_PROVINCE="RU" export KEY_CITY="Moscow" export KEY_ORG="Superorg" export KEY_EMAIL="info@superdomain.com" export KEY_OU="SuperorgVPN"
Генерируем сертификат и ключ для сервера (здесь для него используется имя server):
# cd /etc/openvpn/easy-rsa # source ./vars # ./clean-all # ./build-ca # ./build-key-server server # ./build-dh # cd /etc/openvpn/easy-rsa/keys/ # cp dh2048.pem ca.crt server.crt server.key /etc/openvpn/
В ходе создания сертификата, система предложит установить на него пароль. Делать это или нет, каждый для себя решает сам. Возможно, если VPN настраивается на собственном сервере и только для собственного использования, пароль на сертификаты можно и не устанавливать.
3. Пишем конфиг OpenVPN сервера.
И в 6, и в 7 версии CentOS открываем файл /etc/openvpn/server.conf и прописываем следующее…
# cat /etc/openvpn/server.conf local 1.2.3.4 port 3333 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 push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" keepalive 10 120 comp-lzo user nobody group nobody persist-key persist-tun mssfix fragment 1300 sndbuf 524288 rcvbuf 524288 push "sndbuf 524288" push "rcvbuf 524288" log openvpn.log verb 5
1.2.3.4 — IP сервера, 3333 — порт, на котором будет работать OpenVPN, лог можно отправить в /dev/null при необходимости. Здесь так же сразу же используется увеличенный буфер. Подробнее об этом нужно прочитать в отдельной заметке.
Конфиг сохраняем, сервис openvpn перезапускаем и добавляем его в автозапуск.
Для CentOS 6:
# chkconfig openvpn on # service openvpn restart
Для CentOS 7:
# systemctl -f enable openvpn@server.service # systemctl restart openvpn@server.service
4. Настраиваем маскарад и разрешаем форвардинг.
Для CentOS 6:
В iptables добавляем следующее правило:
# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE # service iptables save
Для CentOS 7:
В FirewallD выполняем следующие команды:
# firewall-cmd --permanent --add-masquerade # INTFS=$(ip route get 8.8.8.8 | awk 'NR==1 {print $(NF-2)}') # firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $INTFS -j MASQUERADE # firewall-cmd --reload
Включаем форвардинг (и для 6, и для 7 версии):
# cat /etc/sysctl.conf net.ipv4.ip_forward = 1 # sysctl -p
5. Создаём сертификаты для клиента.
Здесь для него используется имя client.
# cd /etc/openvpn/easy-rsa # ./build-key client # mkdir /root/clientserts # mv /etc/openvpn/easy-rsa/keys/client.* /root/clientserts/ # cp /etc/openvpn/easy-rsa/keys/ca.crt /root/clientserts/ # cd /root/ # zip -r -9 clientserts.zip clientserts/
В итоге, мы получаем архив clientserts.zip, в котором для настройки OpenVPN на десктопе, нам будут нужны следующие файлы:
client.crt client.key ca.crt
Остаётся только настроить наш софт на ПК для работы с OpenVPN. Настройка клиентов описана в заметке OpenVPN Fedora Server, при необходимости, можно воспользоваться примером из неё.
В Windows для настройки OpenVPN
…..
cert «C:\\Program Files\\OpenVPN\\config\\client.crt»
key «C:\\Program Files\\OpenVPN\\config\\server.key»
…..
в последнем не server.key, а client.key
+ порты лучше указать заранее, что можно выбрать только 1194 в случае с udp
Статья была переработана и актуализирована и для CentOS 6, и для CentOS 7. В конфиг сервера были добавлены увеличенные буферы.
> + порты лучше указать заранее, что можно выбрать только 1194 в случае с udp
Сорри за действительно долгий ответ. Не совсем понял о чём речь в этом месте — я без проблем указываю не стандартный порт для UDP (7194, например), и всё работает корректно.
Тут скорее посыл был к открытым стандартным портам на сервере, не так выразился, но в любом случае на собственном опыте рекомендую выбирать режим tcp и 443 порт, уж слишком много админов и публичных вай-фаев блокируют все остальное 🙂
У меня в 7-ом центосе не оказалось firewalld:
FirewallD is not running
На попытку сохранить правила давало:
The service command supports only basic LSB actions….
Пришлось загуглить вариант:
Then install iptables-service by following command:
# yum install iptables-services
Then enable iptables as services:
# systemctl enable iptables
Now you can save your iptable rules by following command:
# service iptables save
В файле /etc/sysctl.conf у меня записаны строки:
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
Значит мне в какой-то другой файл надо конфиг записать?
./build-key client
ругается:
Please edit the vars script to reflect your configuration….
Не понимаю, прошлый раз по Вашей инструкции ставил, всё было нормально, сейчас же прям с каждой строкой война.
Вроде всё настроил, коннекта нет. Пробую 3 строки для иптейблс из статьи https://habr.com/ru/post/153855/ — я раньше по ней настраивал, но что-то там тоже не получалось для центоса 7-го
Антиспам порезал все комментарии Ивана. %) Если бы вручную не проверял, так бы их и не увидел. Остаётся надеяться, что ему таки удалось установить всё что нужно.
Удалось только поставить с нуля на шестой центос. На седьмом не взлетело, чёрт его знает почему. Да и то скорость печальная.