Я пытаюсь добавить поддержку туннеля IPv6 на сервер OpenVPN (то есть клиенты могут получить доступ к Интернету IPv6 через VPN).
Маршрутизатор, на котором работает OpenVPN (Netgear WNDR4500v1 с Tomato v1.28-140), использует IPv6 через Hurricane Electric (и с маршрутизацией /64, и с маршрутизацией /48) - 2001:xxxx:7:3b3::2 - это адрес WAN IPv6 - 2001:xxxx:8:3b3::1/64 направляется на интерфейс LAN (br0) - 2001:xxxx:e1ca::/48 направляется на интерфейс OpenVPN (tun21)
IPv6 работает из локальной сети, test-ipv6.com возвращает 10/10.
Я могу подключиться от клиента к серверу OpenVPN через IPv4 или IPv6, и клиент получает адрес v6, который находится в префиксе 2001:xxxx:e1ca::/48. Тем не менее, клиент не имеет подключения IPv6 вообще. Я пробовал это с несколькими клиентами (Tunnelblick/macOS, OpenVPN для Android, OpenVPN Connect/iOS). test-ipv6.com говорит:«IPv6-адрес не обнаружен». Кроме того, это отображается в журналах сервера:
SM-N910V/2610:xxxx:7f97 MULTI: bad source address from client [2610:xxxx:7f97], packet dropped
Я посмотрел на вики OpenVPN IPv6, а также руководство Якоба Д. Эванса среди других ресурсов. Конфигурации сервера / клиента приведены ниже.
Конфигурация сервера:
# Automatically generated configuration
daemon
server 192.168.2.0 255.255.255.0
proto udp
port 1194
dev tun21
cipher AES-256-CBC
comp-lzo adaptive
keepalive 15 60
verb 3
push "route 192.168.1.0 255.255.255.0"
push "dhcp-option DNS 192.168.1.1"
push "redirect-gateway def1"
tls-auth static.key 0
ca ca.crt
dh dh.pem
cert server.crt
key server.key
status-version 2
status status
# Custom Configuration
proto udp6
topology subnet
push "topology subnet"
server-ipv6 2001:xxxx:e1ca::/64
push "route-ipv6 2001:xxxx:8:3b3::/64"
push "route-ipv6 2001:xxxx:e1ca::/48"
push "comp-lzo adaptive"
verb 4
auth sha256
Конфигурация клиента:
client
dev tun
remote vpn.server.com 1194 udp6
float
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
key-direction 1
auth sha256
explicit-exit-notify
comp-lzo adaptive
pull
<ca>...</ca>
<cert>...</cert>
<key>...</key>
<tls-auth>...</tls-auth>
ip -6 route
до подключения к VPN:
2001:xxxx:7:3b3::2 via fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto static metric 100 pref medium
2610:xxxx::/64 dev enp0s3 proto ra metric 100 pref medium
fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto static metric 100 pref medium
fe80::/64 dev enp0s3 proto kernel metric 100 pref medium
fe80::/64 dev enp0s3 proto kernel metric 256 pref medium
default via fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto ra metric 100 pref medium
ip -6 route
после подключения к VPN:
2001:xxxx:7:3b3::2 via fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto static metric 100 pref medium
2001:xxxx:8:3b3::/64 via 2001:xxxx:e1ca::1 dev tun0 proto static metric 50 pref medium
2001:xxxx:e1ca::1 dev tun0 proto kernel metric 50 pref medium
2001:xxxx:e1ca::1 dev tun0 proto kernel metric 256 pref medium
2001:xxxx:e1ca::1000 dev tun0 proto kernel metric 50 pref medium
2001:xxxx:e1ca::/48 via 2001:xxxx:e1ca::1 dev tun0 proto static metric 50 pref medium
2610:xxxx::/64 dev enp0s3 proto ra metric 100 pref medium
fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto static metric 100 pref medium
fe80::/64 dev enp0s3 proto kernel metric 100 pref medium
fe80::/64 dev enp0s3 proto kernel metric 256 pref medium
default dev tun0 proto static metric 50 pref medium
default via fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto ra metric 100 pref medium
ip -6 route
после запуска команд, опубликованных @grawity ниже:
default from 2001:xxxx:e1ca::/64 dev tun0 metric 1024 pref medium
default from 2610:xxxx::/64 via 2610:xxxx::1 dev enp0s3 metric 1024 pref medium
2001:xxxx:7:3b3::2 via fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto static metric 100 pref medium
2001:xxxx:8:3b3::/64 via 2001:xxxx:e1ca::1 dev tun0 proto static metric 50 pref medium
2001:xxxx:e1ca::1 dev tun0 proto kernel metric 50 pref medium
2001:xxxx:e1ca::1 dev tun0 proto kernel metric 256 pref medium
2001:xxxx:e1ca::1000 dev tun0 proto kernel metric 50 pref medium
2001:xxxx:e1ca::/48 via 2001:xxxx:e1ca::1 dev tun0 proto static metric 50 pref medium
2610:xxxx::/64 dev enp0s3 proto ra metric 100 pref medium
fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto static metric 100 pref medium
fe80::/64 dev enp0s3 proto kernel metric 100 pref medium
fe80::/64 dev enp0s3 proto kernel metric 256 pref medium
default dev tun0 proto static metric 50 pref medium
default via fe80::6c5:a4ff:feea:9cc1 dev enp0s3 proto ra metric 100 pref medium
У кого-нибудь есть идеи относительно того, что происходит?
Журналы OpenVPN: https://gist.github.com/abraha2d/f339ff163dd93e20ba3b499c69d6abe3