How to Setup and Configure an OpenVPN Server on CentOS 6Установка и настройка OpenVPN Server на CentOS 6

openvpnЭта статья поможет вам установить и настроить OpenVPN Server на CentOS 6 x64. А также подключить к серверу Windows, OS X и Linux клиентов. Но перед тем как начать, — вам необходимо подключить EPEL-репозиторий. Именно этом репозитории хранятся пакеты для OpenVPN Server.

 wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
 rpm -Uvh epel-release-6-8.noarch.rpm

Первоначальное конфигурация

Для начала произведем установку OpenVPN из EPEL

yum install openvpn -y

Вместе с пакетом OpenVPN-сервера идут примеры конфигурации, которые мы скопируем в каталог /etc/openvpn

cp /usr/share/doc/openvpn-2.*/sample/sample-config-files/server.conf /etc/openvpn

После того, как у нас в нужном каталоге появился основной файл конфигурации OpenVPN, приведем базовые настройки к виду

 push "redirect-gateway def1 bypass-dhcp"
 push "dhcp-option DNS 8.8.8.8"
 push "dhcp-option DNS 8.8.4.4"
 user nobody
 group nobody

Генерация ключей и сертификатов

Только что мы закончили конфигурирование OpenVPN, и теперь нам необходимо сгенерировать ключи и сертификаты. Как и файл server.conf, скопируем необходимые скрипты в каталог /etc/openvpn. Только важно не забыть перед этим установить пакет easy-rsa.

 yum install easy-rsa
 mkdir -p /etc/openvpn/easy-rsa/keys
 cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa

После чего необходимо открыть файл /etc/openvpn/easy-rsa/vars любимым редактором и привести заполнить некоторые поля

export KEY_COUNTRY="US"
 export KEY_PROVINCE="NY"
 export KEY_CITY="New York"
 export KEY_ORG="Organization Name"
 export KEY_EMAIL="[email protected]"
 export KEY_CN=droplet.example.com
 export KEY_NAME=server
 export KEY_OU=server

OpenVPN может неверно определить версию OpenSSL на CentOS 6 и не запуститься. Чтобы исключить это скопируем openssl-1.0.0.cnf с именем openssl.cnf

cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

Изменим рабочий каталог на /etc/openvpn/easy-rsa и сгенерируем CA-сертификат

 cd /etc/openvpn/easy-rsa
 source ./vars
 ./clean-all
 ./build-ca

После этого мы можем создать сертификат для нашего OpenVPN-сервера. В конце напишите yes

./build-key-server server

Также нам необходимо сгенерировать Diffie Hellman ключ, используя скрипт build-dh и скопировать все файлы в каталог /etc/openvpn

 ./build-dh
 cd /etc/openvpn/easy-rsa/keys
 cp dh1024.pem ca.crt server.crt server.key /etc/openvpn

И на последок, чтобы позволить клиентам подключаться, — нужно создать клиентские сертификаты. Вы можете проделать генерацию клиентских сертификатов и ключей любое количество раз

 cd /etc/openvpn/easy-rsa
 ./build-key client

Маршрутизация и запуск OpenVPN

Создадим в iptables правило, позволяющее ходить пакетам за пределы подсетей OpenVPN

 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
 service iptables save

И разрешим IP Forwarding в sysctl. Открываем /etc/sysctl.conf и определяем параметр

net.ipv4.ip_forward = 1

Ну и в завершение сохраним настройки sysctl и включим OpenVPN в автозагрузку и запустим его

 sysctl -p
 chkconfig openvpn on
 service openvpn start

Конфигурация OpenVPN клиентов

Итак, ваш OpenVPN сервер запущен и готов к подключению внешних клиентов. Процедура подключения в разных операционных системах может незначительно отличаться. Но, в общем и целом, она сводится к тому, чтобы программе клиенту подключить конфигурационный файл(без кавычек)

client
dev tun
proto udp
remote x.x.x.x 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
<ca>
Contents of ca.crt
</ca>
<cert>
Contents of client.crt
</cert>
<key>
Contents of client.key
</key>

Вместо x.x.x.x вам необходимо прописать IP-адрес OpenVPN-сервера. А в блоки ca, cert и key содержимое файлов /etc/openvpn/easy-rsa/keys/ca.crt, /etc/openvpn/easy-rsa/keys/client.crt и /etc/openvpn/easy-rsa/keys/client.key соответственно.

Сохраните файл конфигурации клиента с расширением .ovpn по следующей таблице

Операционная система Программа Путь к файлу конфигурации
Windows OpenVPN Community Edition binaries C:\Program Files\OpenVPN\config
Mac OS X Tunnelblick ~/Library/Application Support/Tunnelblick/Configurations
Linux openvpn any

В Linux подключение происходит следующей командой

sudo openvpn --config ~/path/to/client.ovpn

Примите мои поздравления — мы закончили установку, настройку и конфигурирование OpenVPN сервера на ОС CentOS 6!

Оставить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *