Назад | Перейти на главную страницу

Проблемы маршрутизации Клиент / сервер IPv6, где сервер имеет как собственный, так и туннелированный адрес

Я пытался заставить IPv6 работать в моей сети OpenVPN. У сервера уже есть IPv6, однако у него есть только / 64, а самый большой доступный диапазон - / 116 (что нарушает autoconf). Я получаю от he.net 6-в-4/48 для предоставления адресов моей VPN.

Конечные точки туннеля IPv6

Server IPv6 Address:2001:470:xxxx:xxxx::1/64
Client IPv6 Address:2001:470:xxxx:xxxx::2/64

Маршрутизируемые префиксы IPv6

Routed 2001:470:yyyy::/48:

Моя сетевая структура (интернет => сервер => клиент):

Internet
 ||
OpenVPN server
eth0 (Native ipv6): 2600:3c01::xxxx:xxxx:xxxx:xxxx/64
he-ipv6 (6-in-4): 2001:470:xxxx:xxxx::2/64
tap0 (VPN): 2001:470:yyyy:zzzz::1/64
 ||
OpenVPN client
wlan0 (ipv4)
tap0 (VPN - autconf): 2001:470:yyyy:zzzz:wwww:wwww:wwww:wwww/64

Конфигурация сервера:

server # ip -6 route
2001:470:xxxx:xxxx::/64 via :: dev he-ipv6  proto kernel  metric 256 
2001:470:yyyy:zzzz::/64 dev tap0  proto kernel  metric 256 
2600:3c01::xxxx:xxxx:xxxx:xxxx dev eth0  proto kernel  metric 256 
fe80::/64 dev eth0  proto kernel  metric 256 
fe80::/64 dev tap0  proto kernel  metric 256 
fe80::/64 via :: dev he-ipv6  proto kernel  metric 256 
default dev he-ipv6  metric 1024 
default via fe80::xxxx:xxxx:xxxx:xxxx dev tap0  proto kernel  metric 1024  expires 4748sec

Конфигурация клиента:

client # ip -6 route                                           
2001:470:xxxx:xxxx::/64 via 2001:470:yyyy:zzzz::1 dev tap0  metric 1 
2001:470:yyyy:zzzz::/64 dev tap0  proto kernel  metric 256  expires 86388sec
fe80::/64 dev wlan0  proto kernel  metric 256 
fe80::/64 dev tap0  proto kernel  metric 256 
default via fe80::xxxx:xxxx:xxxx:xxxx dev tap0  proto kernel  metric 1024  expires 5383sec hoplimit 64

Результаты пинга

Internet => 2600:3c01::xxxx:xxxx:xxxx:xxxx           Works
Internet => 2001:470:yyyy:zzzz::1                    Works
Internet => 2001:470:yyyy:zzzz:wwww:wwww:wwww:wwww   Timed Out

Server => 2600:3c01::xxxx:xxxx:xxxx:xxxx             Works
Server => 2001:470:yyyy:zzzz::1                      Works
Server => 2001:470:yyyy:zzzz:wwww:wwww:wwww:wwww     Works
Server => 2404:6800:4006:802::1011 (ipv6.google.com) Works

Client => 2600:3c01::xxxx:xxxx:xxxx:xxxx             Works
Client => 2001:470:yyyy:zzzz::1                      Works
Client => 2001:470:yyyy:zzzz:wwww:wwww:wwww:wwww     Works
Client => 2404:6800:4006:802::1011 (ipv6.google.com) Destination unreachable: Address unreachable

Какие должны быть маршруты, чтобы клиент мог нормально подключаться к сети с ipv6?

Я знаю, что на клиенте должен быть маршрут по умолчанию для dev tap0, однако ни один шлюз, который я пробовал, не работал. Я пытался решить это (как с помощью исследований, так и экспериментов), но не нашел решения, которое работает (хотя этот похоже, близко).

В итоге я изменил настройку, поэтому вопрос больше не актуален.

Однако я подумал, что вам нужно убедиться, что ядро ​​настроено для пересылки пакетов IPv6 для всех устройств.

Вы уверены, что проблема в клиенте, а не на сервере? Клиентские маршруты выглядят нормально. Достигает ли трасса маршрута к ipv6.google.com 2001: 470: yyyy: zzzz :: 1? Если это так, то трафик IPv6 использует VPN в качестве шлюза по умолчанию, и все маршруты вашего клиента настроены.

Я думаю, проблема может быть в пересылке пакетов между tap0 и he-ipv6 на сервере. Я не очень знаком с OpenVPN, но обычно такие вещи контролируются политиками в дополнение к таблице маршрутизации.

Я думаю, что OpenVPN использует iptables, и поэтому для разрешения пересылки в обоих направлениях между двумя интерфейсами ipv6 потребуется что-то вроде этого.

iptables -I FORWARD -i tap0 -o he-ipv6 -j ACCEPT
iptables -I FORWARD -i he-ipv6 -o tap0 -j ACCEPT