Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

openvpn [2012-02-17 08:46 UTC]
rm tun->tap
openvpn [2012-02-17 09:19 UTC] (текущий)
rm
Строка 1: Строка 1:
====== Настройка IPv6 в OpenVPN ====== ====== Настройка IPv6 в OpenVPN ======
-Использовать IPv6 внутри OpenVPN удобнее всего в режиме работы VPN под названием tap (а не "tun"), представляющем из себя эмуляцию внутри VPN-соединения обычного Ethernet-подключения.+Использовать IPv6 внутри OpenVPN удобнее всего в режиме работы VPN под названием tap (а не "tun"), представляющем из себя эмуляцию внутри VPN обычного Ethernet-подключения.
-===== Выбор транспортного протокола ===== 
OpenVPN-туннель может работать и при полном отсутствии IPv4, т.е. использовать в качестве транспорта UDP/IPv6, и внутри туннеля также, пропускать IPv6-трафик. Именно такой вариант я и рекомендую -- дело в том, что при использовании OpenVPN поверх IPv4 нужно будет обеспечивать на файрволлах обоих сторон надёжный пропуск-проброс UDP-пакетов на внутренние IPv4-адреса терминирующих VPN компьютеров (TCP тоже поддерживается, но к использованию авторами OpenVPN не рекомендован), что может оказаться немногим проще, чем настроить на этих же роутерах [[/6to4/howto|6to4]] или [[/he.net/howto|другой]] туннель. OpenVPN-туннель может работать и при полном отсутствии IPv4, т.е. использовать в качестве транспорта UDP/IPv6, и внутри туннеля также, пропускать IPv6-трафик. Именно такой вариант я и рекомендую -- дело в том, что при использовании OpenVPN поверх IPv4 нужно будет обеспечивать на файрволлах обоих сторон надёжный пропуск-проброс UDP-пакетов на внутренние IPv4-адреса терминирующих VPN компьютеров (TCP тоже поддерживается, но к использованию авторами OpenVPN не рекомендован), что может оказаться немногим проще, чем настроить на этих же роутерах [[/6to4/howto|6to4]] или [[/he.net/howto|другой]] туннель.
-===== Конфигурационные файлы ===== 
Для этого примера предположим, что мы хотим связать главный офис фирмы (HQ) с одним из её филиалов (Branch) в режиме VPN точка-точка, с разделяемым секретным ключом (''vpn-hq.key''), IPv6 нам предоставляет [[/he.net/howto|tunnelbroker.net]], в главном офисе используются различные подсети из ''2001:470:xxxx::/48'', а VPN-клиенту мы решили выдать ''2001:470:xxxx:1::/64''. Для этого примера предположим, что мы хотим связать главный офис фирмы (HQ) с одним из её филиалов (Branch) в режиме VPN точка-точка, с разделяемым секретным ключом (''vpn-hq.key''), IPv6 нам предоставляет [[/he.net/howto|tunnelbroker.net]], в главном офисе используются различные подсети из ''2001:470:xxxx::/48'', а VPN-клиенту мы решили выдать ''2001:470:xxxx:1::/64''.
-==== На обоих компьютерах ==== +===== Общие настройки (на обоих компьютерах) ===== 
-Файл ''/etc/openvpn/vpn-hq.key'' будет содержать секретный ключ, который при использовании туннеля с шифрованием в режиме "shared secret" должен быть одинаковым на всех соединяемых компьютерах. Сгенерировать его можно следующим образом((http://openvpn.net/index.php/open-source/documentation/miscellaneous/78-static-key-mini-howto.html)):+Файл ''/etc/openvpn/vpn-hq.key'' будет содержать секретный ключ, который при использовании туннеля с шифрованием в режиме "shared secret" должен быть одинаковым на всех соединяемых компьютерах. Сгенерировать его можно следующим образом:
<code>openvpn --genkey --secret /etc/openvpn/vpn-hq.key</code> <code>openvpn --genkey --secret /etc/openvpn/vpn-hq.key</code>
Строка 28: Строка 26:
echo 64 > /proc/sys/net/ipv6/conf/$INTERFACE/accept_ra_rt_info_max_plen echo 64 > /proc/sys/net/ipv6/conf/$INTERFACE/accept_ra_rt_info_max_plen
-if [ -f "/etc/openvpn/$INTERFACE.ipv6" ]+if [ -f "/etc/openvpn/$INTERFACE.ipv6" ]; then
  . /etc/openvpn/$INTERFACE.ipv6   . /etc/openvpn/$INTERFACE.ipv6
  for A in $LOCAL_IP6; do   for A in $LOCAL_IP6; do
Строка 36: Строка 34:
exit 0</file> exit 0</file>
-По-умолчанию, при каждом перезапуске VPN создаются туннельные интерфейсы со случайным MAC-адресом. Это неудобно тем, что любые открытые внутри VPN соединения после перезапуска VPN подвисают на долгое время -- до тех пор, пока удалённый компьютер не обнаружит изменившийся MAC-адрес другого конца туннеля. Указанным же выше способом (строка с ifconfig) можно добиться того, чтобы MAC-адрес на каждом клиентском компьютере был постоянным (до смены hostname, что происходит крайне редко), и при этом с достаточной степенью вероятности оказывался уникальным.+По-умолчанию, при каждом перезапуске VPN создаются туннельные интерфейсы со случайным MAC-адресом. Это неудобно тем, что любые открытые внутри VPN соединения после перезапуска VPN подвисают на долгое время -- до тех пор, пока удалённый компьютер не обнаружит изменившийся MAC-адрес другого конца туннеля. Указанным же выше способом (строка с ''ifconfig'') можно добиться того, чтобы MAC-адрес на каждом клиентском компьютере был каждый раз одним и тем же (до смены hostname, что происходит крайне редко), и при этом с достаточной степенью вероятности уникальным.
-==== На сервере (hq.example.com) ====+===== На сервере =====
<file - /etc/openvpn/vpn-branch.conf>lport 1194 <file - /etc/openvpn/vpn-branch.conf>lport 1194
proto udp6 proto udp6
dev vpn-branch dev vpn-branch
dev-type tap dev-type tap
 +tun-mtu 1360
secret vpn-hq.key secret vpn-hq.key
script-security 2 script-security 2
Строка 58: Строка 56:
    IgnoreIfMissing on;     IgnoreIfMissing on;
    AdvDefaultLifetime 0;     AdvDefaultLifetime 0;
-    AdvLinkMTU 1400;     
    prefix 2001:470:xxxx:1::1/64 { };     prefix 2001:470:xxxx:1::1/64 { };
    route 2001:470:xxxx::/48 { };     route 2001:470:xxxx::/48 { };
Строка 64: Строка 61:
</file> </file>
-==== На клиенте ====+Нужно также включить на сервере IP forwarding, для чего добавить в ''/etc/sysctl.conf'' следующие две строки и выполнить ''sysctl -p'' с правами ''root'': 
 +<file>net.ipv6.conf.all.forwarding=1 
 +net.ipv6.conf.default.forwarding=1</file> 
 +...а также добавить соответствующее правило в настройки используемого IPv6-файрволла: 
 +<file>ip6tables -A FORWARD -i vpn-branch -j ACCEPT</file> 
 + 
 +===== На клиенте =====
<file - /etc/openvpn/vpn-hq.conf>remote hq.example.com 1194 <file - /etc/openvpn/vpn-hq.conf>remote hq.example.com 1194
proto udp6 proto udp6
dev vpn-hq dev vpn-hq
dev-type tap dev-type tap
 +tun-mtu 1360
secret vpn-hq.key secret vpn-hq.key
script-security 2 script-security 2
-up tap.sh +up tap.sh</file>
-</file> +
- +
-===== Включение маршрутизации ===== +
-Если необходимо разрешить VPN-клиенту доступ к другим подсетям, кроме используемой непосредственно для организации туннеля, либо выпустить его "во внешний мир" через Интернет-соединение сервера, следует включить на сервере IP forwarding, для чего добавить в ''/etc/sysctl.conf'' следующие две строки и выполнить ''sysctl -p'' с правами ''root'': +
-<file>net.ipv6.conf.all.forwarding=1 +
-net.ipv6.conf.default.forwarding=1</file> +
-...а также добавить соответствующее правило в настройки используемого IPv6-файрволла: +
-<file>ip6tables -A FORWARD -i vpn-branch -j ACCEPT</file>+
===== Запуск туннеля ===== ===== Запуск туннеля =====
После создания на обоих компьютерах всех указанных выше файлов, достаточно просто перезапустить OpenVPN (в Debian/Ubuntu -- ''/etc/init.d/openvpn restart'') и RADVD (''/etc/init.d/radvd restart''), после чего туннель должен будет начать работать. После создания на обоих компьютерах всех указанных выше файлов, достаточно просто перезапустить OpenVPN (в Debian/Ubuntu -- ''/etc/init.d/openvpn restart'') и RADVD (''/etc/init.d/radvd restart''), после чего туннель должен будет начать работать.
 +
 +===== Ссылки =====
 +  * http://openvpn.net/index.php/open-source/documentation/miscellaneous/78-static-key-mini-howto.html

openvpn.1329468373.txt.gz · Последние изменения: 2012-02-17 08:46 UTC От rm
Personal Tools