У меня есть собственный IPv6 через моего интернет-провайдера (они дают мне /48
). Используя RA (SLAAC), мой маршрутизатор объявляет конкретный /64
к машинам в моей сети - другими словами, моя сеть имеет полный IPv6.
Мой маршрутизатор также подключен к сети OpenVPN для доступа к некоторым частным ресурсам, некоторые из которых доступны через IPv6. Цель состоит в том, чтобы машины в моей локальной сети имели прозрачный доступ к этим ресурсам.
VPN проталкивает маршруты к маршрутизатору, чтобы трафик направлялся вниз по его интерфейсу, когда ему нужно получить доступ к частным ресурсам - этот бит работает "нормально", поскольку я могу видеть, что трафик идет правильно, когда tcpdump
на tun0
интерфейс, и подключение к вещам с самого маршрутизатора в порядке.
Моя проблема в том, что трафик от конечных клиентов никогда не возвращается к ним. Я думаю, что происходит то, что IP-пакеты используют общедоступные адреса IPv6 в качестве своего исходного адреса (клиентские машины вообще не знают о VPN), и поэтому VPN отбрасывает пакеты, потому что они приходят (насколько удаленный OpenVPN) фиктивный адрес.
Похоже, это известная проблема, но я не мог найти, чтобы кто-нибудь говорил об этом. Полагаю, мне нужно как-то указать адреса в /64
что я получаю от VPN клиентам в моей LAN, а также как-то (!) тоже распределяю маршруты? Или еще сделать какой-то перевод 1: 1 local → VPN NAT для v6 (вероятно, не это решение)? Делали ли другие это раньше, и если да, то что сделали вы?