Вы находитесь здесь: version6.ru » Настройка IPv6 в OpenVPN
Это — старая версия документа!
Настройка IPv6 в OpenVPN
OpenVPN поддерживает IPv6 как внутри, так и снаружи туннеля. Однако поддержкой этой на сегодняшний день можно воспользоваться только с помощью собственного скрипта для поднятия интерфейса. Этот скрипт (up-ipv6.sh
) приведён ниже.
OpenVPN-туннель может работать и при полном отсутствии IPv4, т.е. использовать в качестве транспорта UDP/IPv6, и внутри туннеля также, пропускать IPv6-трафик. Именно такой вариант я и рекомендую – дело в том, что при использовании OpenVPN поверх IPv4, придётся озаботиться надёжным пропуском-пробросом на файрволлах обоих сторон UDP-пакетов на внутренние IPv4-адреса терминирующих VPN компьютеров (TCP тоже поддерживается, но к использованию авторами OpenVPN не рекомендован), что может оказаться немногим проще, чем «поднять» на этих же роутерах элементарный 6to4.
Итак, для этого примера предположим, что мы хотим связать главный офис фирмы (HQ) с одним из её филиалов (Branch) в режиме VPN точка-точка, с разделяемым секретным ключом (vpn-hq.key
), IPv6 нам предоставляет tunnelbroker.net, в главном офисе используются различные подсети из 2001:470:xxxx::/48
, а VPN-клиенту мы решили выдать 2001:470:xxxx:1::/64
.
На сервере (hq.example.com)
- /etc/openvpn/vpn-branch.conf
lport 1194 proto udp6 dev vpn-branch dev-type tun tun-ipv6 secret vpn-hq.key script-security 2 up /etc/openvpn/up-ipv6.sh
- /etc/openvpn/vpn-branch.ipv6
LOCAL_IP6=2001:470:xxxx:1::1/64
На клиенте
- /etc/openvpn/vpn-hq.conf
remote hq.example.com 1194 proto udp6 dev vpn-hq dev-type tun tun-ipv6 secret vpn-hq.key script-security 2 up /etc/openvpn/up-ipv6.sh
- /etc/openvpn/vpn-hq.ipv6
LOCAL_IP6=2001:470:xxxx:1::2/64 ROUTE_IP6=2001:470:xxxx::/48
На обоих компьютерах
- /etc/openvpn/up-ipv6.sh
#!/bin/bash INTERFACE=$1; shift; TUN_MTU=$1; shift; UDP_MTU=$1; shift; LOCAL_IP=$1; shift; REMOTE_IP=$1; shift; MODUS=$1; shift; ip link set $INTERFACE up ip link set mtu $TUN_MTU dev $INTERFACE . /etc/openvpn/$INTERFACE.ipv6 for I in $LOCAL_IP6; do ip -6 addr add $I dev $INTERFACE done for R in $ROUTE_IP6; do ip -6 route add $R dev $INTERFACE done exit 0