В данном руководстве речь пойдет об установке и настройке 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.