OpenVPN. Установка, настройка и использование (часть 2).

Продолжим настройку OpenVPN. В прошлой статье мы говорили о том, что это, для чего применяется и даже выполнили немалую часть работ по настройке. Без долгих предисловий продолжим с того места, на котором остановились.

Настраиваем OpenVPN.

Итак, мы сгенерировали ключи и сертификаты.
Переместимся в директорию, в которой они находятся:

cd ~/openvpn-certificates/keys

и одной командой  создадим их копии в нужном нам месте:

sudo cp server.srt server.key ca.crt ca.key dh2048.pem ta.key /etc/openvpn

Ключи, созданные для клиентов, копировать сюда не нужно.

Теперь необходимо подготовить конфигурационный файл OpenVPN. Разработчики советуют не создавать его с нуля, а использовать ими же предоставленный образец в качестве отправной точки. Так и поступим:
sudo gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

sudo nano /etc/openvpn/server.conf
Если вы все сделали правильно, перед вами окажется содержимое конфигурационного файла сервера OpenVPN.
Для начала убедитесь, что названия файлов ключей и сертификатов соответствуют созданным вами. Нас интересуют строки, начинающиеся с:
  • ca
  • cert
  • key
  • dh
Просто убедитесь, что в названия файлов, которые мы недавно скопировали в /etc/openvpn/, совпадают с указанными здесь. Если это не так, измените значения в файле соответствующим образом:

Находим строку со следующим содержимым:

;tls-auth ta.key 0 # This file is secret

и удаляем точку с запятой в начале (раскомментируем строку).

Листаем дальше, пока не увидим строку „# Select a cryptographic cipher.“
Немного ниже, в этом же блоке, нам на выбор предлагается три варианта шифрования. Blowfish, первый из них, используется по умолчанию. Но в данном случае стандартный вариант не является лучшим. Сообщество OpenVPN рекомендует использовать AES 256 bit. Последуем их совету, раскомментируем вторую строку и изменим 128 на 256:

cipher AES-256-CBC   # AES

Если такой строки нет, ее можно просто добавить.
Под ней добавим еще одну строку:

—tls-auth ta.key 0

Это обеспечит дополнительную защиту.
Раскомментируйте следующую строку для того, чтобы весь трафик клиента проходил через сервер:

push «redirect-gateway def1 bypass-dhcp»

Чтобы сервер имел доступ к общедоступным DNS, раскомментируйте:

push «dhcp-option DNS 208.67.222.222»
push «dhcp-option DNS 208.67.220.220»

Еще ниже раскомментируйте строки:

user nobody
group nogroup

чтобы OpenVPN запускался от имени пользователя с минимальными правами.

После этого нажмите F2, чтобы выйти из nano, затем Y, чтобы согласиться сохранить изменения и, наконец, Enter для окончательного подтверждения.

Настройка сервера.

Теперь нам необходимо скорректировать настройки самого сервера. Для этого выполним:
sudo nano /etc/sysctl.conf

В открывшемся файле находим и раскомментируем строку:

net.ipv4.ip_forward=1

Сохраняем файл тем же способом, что и раньше.
Теперь нам необходимо внести поправки в настройки файрвола.
Определяем сетевой интерфейс:

ip route
Нас интересует строка, которая начинается с default, а конкретнее — название интерфейса следующее за ip-адресом и словом dev. В моем случае это eth0.

Запоминаем и переходим к редактированию правил файрвола:

sudo nano /etc/ufw/before.rules
Вставляем следующие строки после первого блока, начинающегося с rules.before перед следующим блоком, который начинается с #Don’t delete:

# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

Не забываем сохранить перед выходом.
Еще немного настроек для файрвола. Выполняем

sudo nano /etc/default/ufw

и редактируем строку DEFAULT_FORWARD_POLICY=»DROP», меняя «DROP» на «ACCEPT». Сохраняем.

Разрешим подключение к порту 1194, который OpenVPN использует по умолчанию. На всякий случай включим ведение логов — мало ли, какая информация нам потребуется в процессе отладки или позже, уже в процессе использования. Обязательно разрешим доступ ssh, чтобы не утратить контроль над сервером. После этого включим файрвол:
sudo ufw allow 1194/udp
sudo ufw logging on
sudo ufw allow ssh
sudo ufw enable
После ввода последней команды потребуется подтверждение. Вводим Y и жмем Enter.
Если в конфигурационном файле /etc/openvpn/server.conf вы изменили номер порта, в вышеприведенной команде необходимо указать именно ваше значение вместо 1194.
Если кроме работы с OpenVPN сервер выполняет еще какие-либо задачи, может потребоваться разрешить работу с другими портами. Для большинства часто используемых сервисов у ufw есть готовые наборы настроек, которые можно включить так же, как мы сделали это для ssh.

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

Подписывайтесь на обновления, впереди много интересного.