суббота, 24 января 2009 г.

OpenVPN: очень быстрый старт

Наиболее быстрый и простой способ организовать VPN-соединение с клиентом, который спрятался за чем угодно кроме прокси - это OpenVPN. Он не использует никаких сложных "управляющих" и "передающих данные" соединений, как это делает PPTP, поэтому идеально подходит в случаях, когда ваш маршрутизатор не умеет нормально пробрасывать GRE (или вы не знаете, как его настроить). Ну и прост в настройке в любой поддерживаемой операционной системе.


Все что нужно сделать - это написать простой конфигурационный файл, сгенерировать ключ и запустить серверную и клиентскую часть.

На примере debian или ubuntu:
1. Устанавливаем OpenVPN (одинаково на сервере и на клиенте):

# aptitude install openvpn

Настраиваем сервер:
1. Создаем вот такой вот /etc/openvpn/openvpn.conf:
# Использовать tun-интерфейсы вместо tap
dev  tun
# Локальный IP и IP дальней стороны туннеля
ifconfig 192.168.111.1 192.168.111.2
# Местоположение общего ключа
secret  /etc/openvpn/openvpn.key
# Порт клиента и сервера
port   1194
# Используемый транспортный протокол
proto  udp
# Сжимаем пакеты с помощью lzo, используя адаптирующийся алгоритм. 
comp-lzo
# проверяем работу туннеля каждые 10 секунд и перезапускаем в случае обрыва через 60
keepalive 10 60
# Не проверять таймауты, если клиент не подключен
ping-timer-rem
# не выключаем интерфейс при перезапуске соединения
persist-tun
# Очень полезная опция - не перечитывать ключ при рестарте соединения. 
# Дело в том что OpenVPN может снижать привелегии (см ниже) при запуске после 
# чтения конфигурационного файла и ключа в целях безопасности. 
persist-key
# Пользователь, под которым работает демон после запуска
user  nobody
# Собственно, становиться ли демоном
daemon
# Куда пишем журнал. 
log-append /var/log/openvpn.log

После этого генерируем общий ключ для соединения:
# openvpn --genkey --secret /etc/openvpn/openvpn.key

Заметим, что он сразу создается с правильными правами - только root может прочитать его.
Перезапускаем OpenVPN:
# /etc/init.d/openvpn restart


Настраиваем клиента:
/etc/openvpn/openvpn.conf
# Единственная строка, которая отличает клиента от сервера - адрес удаленной стороны
remote   our.openvpn.server
dev  tun
# Здесь адреса концов туннеля просто меняются местами
ifconfig 192.168.111.2 192.168.111.1
secret  /etc/openvpn/openvpn.key
port   1194
proto  udp
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
user  nobody
daemon
log-append /var/log/openvpn.log


Осталось только скопировать openvpn.key с сервера на клиента и перезапустить OpenVPN на клиенте:
# /etc/init.d/openvpn restart


Если что-то не работает, сначала смотрим лог (/var/log/openvpn.log).

Комментариев нет:

Отправить комментарий