Сначала вам нужно направить пакеты на устройство TUN на сервере:
route-ipv6 $PREFIX
Кроме того, вам нужно попросить сервер OpenVPN направить этот префикс на ваш клиент:
# This one needs to be in a CCD file:
iroute-ipv6 $PREFIX
После этого сервер должен быть в состоянии направить пакеты этого префикса на клиент.
На клиенте вам нужно настроить (вручную) какой-нибудь IPv6-адрес из этого префикса. (В Linux: ip -6 addr $PREFIX dev tun0
).
На этом этапе вы должны иметь возможность
пинговать этот клиентский IP с сервера;
пинговать сервер с этого клиентского IP.
Если ваш родной интерфейс на сервере - это интерфейс "точка-точка", это должно сработать. Маршрутизатор уже направляет все пакеты для этого префикса на ваш сервер, а сервер направит их вашему клиенту.
Если ваш родной интерфейс не является интерфейсом "точка-точка", у вас проблемы. При попытке переслать пакеты на IP вашего префикса, узлы на родном канале будут пытаться найти MAC-адрес, связанный с этим IPv6-адресом, используя NDP. Ваш сервер не будет отвечать им (потому что этот IPv6-адрес не является одним из его адресов). Клиент не находится на том же канале и не видит NDP-запросы (он все равно не сможет на них ответить). Поэтому никто не ответит на эти NDP-запросы, и пакет не будет отправлен на ваш сервер.
Вы можете либо:
Добавить маршрут на маршрутизаторе, чтобы использовать ваш сервер в качестве шлюза для этого префикса (ip -6 route add $PREFIX via $ipv6_of_the_server
). Однако если это не ваш маршрутизатор, вы, возможно, не сможете этого сделать.
Добавьте правила NDP прокси (ip -neigh add proxy $some_ipv6 dev eth0
). Это заставит сервер отвечать на NDP-запросы от имени клиента. Однако (по крайней мере, в Linux), вы не можете добавить целую подсеть IPV6 в качестве NDP прокси, поэтому вам придется добавить правило для каждого IPv6 адреса, который вы хотите делегировать.
Если ваш родной интерфейс - Ethernet, другой возможностью является использование TAP (Ethernet-based) OpenVPN туннеля вместо TUN (IP-based) и моста виртуального tap-устройства с родным. Таким образом, клиент будет находиться на одном канале с маршрутизатором и сможет отвечать на запросы NDP.