пятница, 13 ноября 2015 г.

Установка и настройка OpenVPN в CentOS 7

Ранее я уже писал, как установить и настроить OpenVPN на Debian: http://blog.amet13.name/2015/02/openvpn-vps.html
Сейчас оставлю заметку по CentOS 7, так как тут есть несколько нюансов.

Установка:
# yum install openvpn easy-rsa

Создаем конфиг для сервера OpenVPN:
# cp /usr/share/doc/openvpn-2.3.8/sample/sample-config-files/server.conf /etc/openvpn/
# vim /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
keepalive 10 120
comp-lzo
persist-key
persist-tun
; логи
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3
; DNS-сервера и тунелирование
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "redirect-gateway def1 bypass-dhcp"

Разрешаем port forwarding:
# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/forwarding.conf
# sysctl --system

Разрешаем порты для SSH и OpenVPN:
# systemctl enable firewalld
# systemctl start firewalld
# firewall-cmd --add-service=ssh --permanent
# firewall-cmd --add-service=openvpn --permanent
# firewall-cmd --add-masquerade --permanent
# firewall-cmd --reload

Настраиваем конфиг переменных:
# cp -R /usr/share/easy-rsa/ /etc/openvpn/
# cd /etc/openvpn/easy-rsa/2.0/
# vim vars
#этот файл менять не обязательно, можно оставить и стандартный
export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="RU"
export KEY_PROVINCE="CR"
export KEY_CITY="Sevastopol"
export KEY_ORG="amet13.name"
export KEY_EMAIL="[email protected]"
export KEY_OU="vpn"

Генерация ключей и сертификатов:
# source ./vars
# ./clean-all
# ./build-ca
# ./build-key-server server
# ./build-dh
# ./build-key client-pc
# ./build-key client-android

Если в будущем придется генерировать ключи для других устройств, то достаточно будет выполнить:
# cd /etc/openvpn/easy-rsa/2.0/
# ./build-key client-newdevice

Копируем нужные ключи и сертификаты сервера в каталог /etc/openvpn и клиентские в /root:
# cp keys/server.{crt,key} /etc/openvpn/
# cp keys/ca.crt /etc/openvpn/
# cp keys/dh2048.pem /etc/openvpn/
# cp keys/client-{pc,android}.{crt,key} /root/

Создаем файлы логов для OpenVPN:
# touch /var/log/openvpn{-status,}.log

Запускаем OpenVPN, убеждаемся что он работает:
# systemctl start openvpn@server
# systemctl enable openvpn@server

Ключи и сертификаты клиентов и CA нужно передать клиентам, например по scp:
client ~ $ scp root@vps:/etc/openvpn/ca.crt Downloads
client ~ $ scp root@vps:/root/client-{pc,android}.{crt,key} Downloads

Если на сервере не нужно хранить клиентские ключ и сертификат, то их можно удалить:
# rm /root/client.{crt,key}

После того, как нужные файлы оказались у клиента, можно создавать VPN-подключение. Пример настройки в Linux Mint:

Устанавливаем соединение. Если установилось, проверяем маршруты:
client ~ $ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.5        0.0.0.0         UG    0      0        0 tun0
10.8.0.1        10.8.0.5        255.255.255.255 UGH   0      0        0 tun0
10.8.0.5        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
185.117.154.9   192.168.0.1     255.255.255.255 UGH   0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0

В случае неполадок, смотрим в логи.

Для андроид-устройства я использовал программу "OpenVPN для Android" и через нее не удавалось подключиться, в таком случае во вкладке "Авторизация/шифрование" нужно снять галочку с пункта "Проверка имени хоста сертификата".

Ссылки:
https://www.howtoforge.com/tutorial/how-to-install-openvpn-on-centos-7/
http://www.stableit.ru/2014/12/openvpn-centos-7-mac-os.html

Комментариев нет: