1.Устанавливать удобнее всего из репозиториев:
для Debian/Ubuntu:
apt-get install openvpn
для Centos/RedHat:
yum install openvpn
2. При построении туннеля воспользуемся самым простым способом аутентификации — методом статического ключа.
Генерация ключа:
openvpn --genkey --cipher AES-256-CBC --secret /etc/openvpn/ksi_key
Ключ записывается в файл ksi_key
Для установления туннеля необходимо файл с секретным ключом перенести на второй сервер (любым способом, можно просто открыть его любым редактором и скопировать его содержимое, либо по перенести по протоколу scp).
3. Конфигурация первого сервера:
# cat client.conf
remote 192.168.75.3
dev tun
ifconfig 192.168.8.2 192.168.8.1
cipher AES-256-CBC
secret /etc/openvpn/ksi_key
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
daemon
4. Конфигурация второго сервера:
# cat server.conf
remote 192.168.25.70
dev tun
ifconfig 192.168.8.1 192.168.8.2
cipher AES-256-CBC
secret /etc/openvpn/ksi_key
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
daemon
remote — IP — адрес хоста, представляющего из себя дальнюю сторону туннеля. Если его не указать, то openvnp будет пассивно принимать все входящие соединения, не пытаясь самостоятельно соединяться с удаленной машиной
dev — тип виртуального устройства туннеля. Может принимать значение tun или tap. Тun позволяет создавать только соединения типа точка-точка, tap виртуальные сегменты Ethernet.
ifconfig — назначает виртуальному tun/tap интерфейсу IP — адрес. Указывает адрес удаленного интерфейса. Это необходимо, потому что туннель работает как стандартное соединение «точка — точка».
cipher — алгоритм, используемый для шифрования пакетов
secret — указывает имя файла, в котором хранится статический ключ, используемый для шифрования потока
keepalive — контроль за состоянием соединений. В случае если по туннелю не передаются данные, через некоторое время посылается ping, для того чтобы соединение не разрывалось.
ping-timer-rem — позволяет обрабатывать директиву keepalive только в случае, если имеется параметр remote. (если remote не указывать, сервер будет принимать пакеты от любых ip адресов, но не будет реагировать на пакеты, до тех пор, пока они не пройдут все аутентификационные тесты)
persist-tun — не позволяет закрывать/открывать tun/tap интерфейс при рестарте соединения (keepalive)
persist-key — не дает перечитывать ключ с файловой системы при рестарте соединения (keepalive)
daemon — работа в режиме сервиса (демона)
5. Стартуем демоны:
Для Debian/Ubuntu:
/etc/init.d/openvpn start
Для Centos/RedHat:
service openvpn start
PS:
Если создать два и более файлов с расширением .conf в папке /etc/openvpn/ то при запуске службы будет запускаться отдельный сервер для каждого файла, тем самым можно иметь соединений точка-точка сколько угодно на одной машине. Только при этом нужно в каждом конфиге указывать уникальный порт (параметр port), если порт не указывается, то используется порт по умолчанию — 1701.