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

В данном руководстве речь пойдет об установке и настройке OpenVPN на облачном сервере CentOS 6. Кроме того, статья охватывает настройку клиентов Windows, OS X или Linux для подключения к серверу OpenVPN.

Прежде чем начать, предоставьте серверу доступ к EPEL (Extra Packages for Enterprise Linux). Этот сторонний репозиторий, предлагаемый Fedora Project, содержит пакет OpenVPN.

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

Базовая настройка OpenVPN

Для начала установите пакет OpenVPN из хранилища EPEL:

yum install openvpn -y

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

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

Теперь, когда файл скопирован в правильное местонахождение, откройте его в текстовом редакторе:

nano -w /etc/openvpn/server.conf

Итак, первое изменение, которое нужно внести в файл, это раскомментировать параметр push, который маршрутизирует входящий трафик клиентов на OpenVPN.

push "redirect-gateway def1 bypass-dhcp"

Кроме того, нужно изменить раздел, который передает маршрут DNS-запросов на Public DNS-сервер Google.

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

Для повышения безопасности убедитесь, что OpenVPN сбрасывает привилегии после запуска. Раскомментируйте соответствующие строки  user и group.

user nobody
group nobody

Создание ключей и сертификатов с помощью easy-rsa

Завершив работу с конфигурационным файлом, создайте необходимые ключи и сертификаты. OpenVPN размещает все необходимые скрипты в папке с документацией по умолчанию. Создайте такую папку и скопируйте файлы.

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

Переместив файлы в правильное местонахождение, нужно отредактировать файл vars, который предоставляет easy-rsa скрипты с необходимыми переменными.

nano -w /etc/openvpn/easy-rsa/vars

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

По завершении в нижней части файла vars должен появиться примерно следующий код:

export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York"
export KEY_ORG="Organization Name"
export KEY_EMAIL="administrator@example.com"
export KEY_CN=droplet.example.com
export KEY_NAME=server
export KEY_OU=server

OpenVPN может не правильно определить версию OpenSSL на CentOS 6. В качестве меры предосторожности нужно вручную скопировать файл конфигурации OpenSSL.

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

Теперь перейдите в рабочий каталог и на основе предоставленной выше информации создайте Certificate Authority (CA).

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

Когда 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 для обеспечения маршрутизации подсети VPN.

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

Затем активируйте пересылку IP-пакетов в файле sysctl:

nano -w /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1

В завершение нужно активировать новые настройки sysctl. Запустите сервер и убедитесь, что настройки sysctl автоматически запускаются вместе с сервером:

sysctl -p
service openvpn start
chkconfig openvpn on

Теперь сервер OpenVPN запущен! В следующих разделах речь пойдет о том, как правильно настроить клиенты.

Настройка OpenVPN-клиента

Запустив сервер OpenVPN, можете приступить к настройке клиентского сервера. Для всех операционных систем действия почти одинаковы.

Для начала нужно извлечь файлы ca.crt, client.crt и client.key с удаленного сервера. Просто используйте SFTP/SCP (Secure File Transfer Protocol/Secure Copy) клиент и переместите их в локальный каталог. В качестве альтернативы можно открыть файлы в nano и скопировать содержимое в локальные файлы вручную. Имейте в виду, файлам client.crt и client.key будут автоматически присвоены имена на основе параметров, используемых ранее в ./build-key. Все необходимые файлы находятся в /etc/openvpn/easy-rsa/keys:

nano -w /etc/openvpn/easy-rsa/keys/ca.crt
nano -w /etc/openvpn/easy-rsa/keys/client.crt
nano -w /etc/openvpn/easy-rsa/keys/client.key

Теперь с помощью сертификата нужно создать в клиентской системе новый файл по имени client.ovpn.

Примечание: “client” нужно заменить именем своего клиента (см. build-key); в файл нужно внести нижеприведенные данные, заменяя x.x.x.x IP-адресом облачного сервера, а также указать соответствующие файлы в специально отведенных местах.

Внесите только содержимое, начиная со строки заголовка “BEGIN” и до “END”, как показано ниже. Не забудьте сохранить эти файлы в качестве конфиденциальной информации.

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>

Теперь вся информация, необходимая для установления соединения, собрана в файле .ovpn, который можно развернуть на системе клиента.

В Windows, вне зависимости от версии, понадобятся официальные бинарные файлы OpenVPN Community Edition, которые поставляются с графическим интерфейсом. Единственное действие, которое нужно выполнить после установки, – это переместить конфигурационный файл .ovpn в соответствующий каталог (C:\Program Files\OpenVPN\config), а затем нажать “connect” в графическом интерфейсе. Графический интерфейс OpenVPN на ОС Windows нужно запускать с правами администратора.

В Mac OS X есть Tunnelblick, приложение с открытым исходным кодом, которое предоставляет графический интерфейс, подобный интерфейсу OpenVPN в Windows, и поставляется в комплекте с OpenVPN и необходимыми драйверами TUN/TAP. Как и в Windows, все, что нужно сделать – это разместить файл .ovpn каталоге the ~/Library/Application Support/Tunnelblick/Configurations.

В Linux нужно установить OpenVPN из официального репозитория дистрибутива. Затем нужно запустить OpenVPN, выполнив:

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

Готово! Выполнив все инструкции руководства, вы получите полностью работоспособный VPN на облачном сервере. Чтобы убедиться, что трафик перенаправляется через VPN,  узнайте общедоступный IP с помощью Google.

Tags: , , , , , , , , , ,

Добавить комментарий