Программирование
On-line приложения
Почитать
Web-сервер Apache
Печать и форматирование
MySQL
Разные рецепты
Сборка/установка
Редактор vi
Справки
Философия
Мой опыт
Скачать
Программы на Tcl/Tk (GUI)
Программы на Python/Tk (GUI)
Программы (CLI)
Help
Хобби
Фракталы
on-line
Язык для рисования фракталов
Гиперкуб
Теория относительности
Ампуллярии
Преподавание
Студенту/абитуриенту
Мой опыт
Автора!

Настройка OpenVPN

В большинстве Internet-источников рассказано, как настроить OpenVPN с X.509. Это процедура, сложность которой далеко не всегда оправдана. Но есть и более простой способ, который нигде толком не описан (я нашёл хорошее HOWTO только на английском языке). Вот его-то я и хочу описать.

Все рецепты опробованы на FreeBSD, но у меня нет никаких сомнений в том, что всё это точно так же заработает и под Linux.

Достоинства и недостатки статического ключа

Достоинства:

  • Настройка очень проста.

Недостатки:

  • Ограничение на масштаб системы: для каждого клиента нужен отдельный сервер.
  • Ключ должен находиться и на клиенте и на сервере, что требует наличия защищённого канала ещё до поднятия VPN.

Если вам нужен простенький канал точка-точка между офисным и домашним компьютером, то достоинства статического ключа явно перевешивают.

Генерация статического ключа

Создаём ключ:

openvpn --genkey --secret openvpn.key

Этот ключ надо поместить и на клиента и на сервер.

Не забудьте поставить на него какие-нибудь, достаточно злые, права:

chown 0:0 openvpn.key
chmod 400 openvpn.key

Создаём VPN-туннель

Как минимум

На сервере:

openvpn --remote xx.xx.xx.xx \
        --dev tun1 \
        --ifconfig 192.168.254.1 192.168.254.2 \
        --verb 9 \
        --secret openvpn.key

Где xx.xx.xx.xx — адрес клиента от которого мы ждём подключения.

На клиенте:

openvpn --remote yy.yy.yy.yy \
        --dev tun1 \
        --ifconfig 192.168.254.2 192.168.254.1 \
        --verb 9 \
        --secret openvpn.key

Где yy.yy.yy.yy — адрес сервера.

Адрес клиента на сервере (xx.xx.xx.xx) указывать не обязательно.

В реальности

В реальной жизни часто приходится поднимать VPN для преодоления firewall, NAT и других препятствий. Я использую такой набор опций:

На клиенте:

openvpn --remote $ip \
        --dev tun1 \
        --ifconfig 192.168.2.1 192.168.2.2 \
        --verb 1 \  
        --secret /root/VPN/openvpn.key \
        --ping 3 \
        --ping-exit 30   

Здесь 192.168.2.1 — адрес клиента, а 192.168.2.2 — адрес сервера. Опция --ping 3 заставляет клиента принудительно посылать пакеты серверу каждые три секунды, чтобы stateful-firewall, находящийся между клиентом и сервером, не удалил канал по тайм-ауту. Опция --ping-exit 30 — если сервер не пингуется тридцать раз подряд, то клиент завершает работу.

На сервере настройки таковы:

openvpn --dev tun1 \
        --ifconfig 192.168.2.2 192.168.2.1 \
        --verb 5 \
        --secret openvpn.key \
        --ping 3

В опции --ifconfig адреса указаны наоборот; кроме того, я использую другой уровень отладки, но это уже кому как нравится.

Настройка firewall

Не забывайте настроить firewall.

Если вы используете ipfw, то самые простые правила, разрешающие весь трафик в свежесозданной сети, могут выглядеть так:

00200 allow ip from 192.168.0.0/16 to 192.168.0.0/16

или

00200 allow ip from any to any via tun1

Номера правил следует задавать такими, чтобы новые правила не вступили в конфликт с уже имеющимися.

Эта страница набрала немалую популярность, её посещает множество людей, поэтому я решил провести небольшое исследование. Если у вас есть комментарий, если вы сочли полученную информацию полезной, не полной, или вообще бесполезной, вы можете высказать своё мнение, пожелания, дополнения.

Если вы ожидаете получить от меня ответ или разъяснение, пожалуйста укажите e-mail.
Ваше сообщение не появится на странице, а просто отправится мне.

© 1999 − 2010 Мичурин Алексей — http://www.michurin.com.ru/