Application: Linux client OpenVPN v.2.3.
Перед установкой OpenVPN необходимо озаботится поддержкой системой псевдо-устройства "tun". Мы будем использовать технологию Layer 3 based IP туннеля для пропускания IP трафика между клиентом и окружением сервера VPN (OpenVPN поддерживает и Layer 2 based Ethernet, но в нашем решении пропускание Ethernet совершенно ни к чему). Для Debian проверить его наличие и поддержку можно следующим образом:
# ls -l /dev/net/tun
Если мы получили примерно следующее, то устройство "tun" поддерживается и можно переходить к следующим шагам:
crw------- 1 root root 10, 200 ... /dev/net/tun
В противном случае будет не лишним создать файл устройства:
# mkdir -p /dev/net
# mknod /dev/net/tun c 10 200
# chmod 600 /dev/net/tun
# mknod /dev/net/tun c 10 200
# chmod 600 /dev/net/tun
Для работы с интерфейсом "tun" нам понадобится модуль ядра "tun". Проверяем, загружен ли он:
# lsmod | grep tun
Получаем что-то вроде:
tun ....
И переходим к дальнейшей конфигурации или, если модуль не загружен, создаем условия для его загрузки:
# modprobe tun
# echo tun >> /etc/modules
# echo tun >> /etc/modules
На самом деле во всех современных дистрибутивах поддержка "/dev/net/tun" осуществляется соответствующими скриптами, и, вместо грубого и прямолинейного создания файла устройства лучше бы поискать пути, предусмотренные создателями дистрибутива.
Инсталлируем OpenSSL, OpenVPN и библиотеку сжатия трафика LZO:
# aptitude install openvpn openssl liblzo2-2
Создаем директорию для хранения журнальных файлов и файлов статистики:
# mkdir -p /var/log/openvpn
# chown -R openvpn /var/log/openvpn
# chgrp -R openvpn /var/log/openvpn
# chown -R openvpn /var/log/openvpn
# chgrp -R openvpn /var/log/openvpn
Для того, чтобы клиент OpenVPN мог средствами операционной системы изменять сетевую конфигурацию интерфейсов - включаем клиента DHCP системы, если он был выключен ранее.
Переходим к конфигурированию клиента OpenVPN.
Используем шаблон конфигурационного файла OpenVPN от разработчиков:
# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client.name.ovpn
Приводим конфигурационный файл к виду, где ключевые параметры будут иметь следующие значения:
# cat /etc/openvpn/client.name.ovpn
client # включаем режим работы в качестве клиента VPN
nobind # ничего не прослушиваем, работаем только в качестве клиента
dev tun # включаем Layer 3 based IP туннель
proto tcp # используемый транспортный протокол
remote vpn.local 443 # IP или доменное имя сервера VPN и прослушиваемый сервером порт
ca /etc/openvpn/ca.crt
cert /etc/openvpn/сlient.name.crt
key /etc/openvpn/сlient.name.key
; tls-auth /etc/openvpn/ta.key 1
comp-lzo # включаем сжатие трафика между сервером и клиентом
cipher AES-256-CBC # включаем шифрование повышенного уровня относительно стандартного
verb 3
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
nobind # ничего не прослушиваем, работаем только в качестве клиента
dev tun # включаем Layer 3 based IP туннель
proto tcp # используемый транспортный протокол
remote vpn.local 443 # IP или доменное имя сервера VPN и прослушиваемый сервером порт
ca /etc/openvpn/ca.crt
cert /etc/openvpn/сlient.name.crt
key /etc/openvpn/сlient.name.key
; tls-auth /etc/openvpn/ta.key 1
comp-lzo # включаем сжатие трафика между сервером и клиентом
cipher AES-256-CBC # включаем шифрование повышенного уровня относительно стандартного
verb 3
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
Запускаем клиента OpenVPN из коммандной строки:
# /usr/sbin/openvpn --config /etc/openvpn/client.name.ovpn