Есть VPS, дают блок /64 (провайдер veesp). На сервере крутится openvpn, соответственно, я хочу, чтобы клиенты получали глобальные ipv6-адреса.
Что я для этого сделал:
- Разделил блок адресов на два по /65.
- В нижней половине выделил один адрес, назначил его на wan-интерфейс сервера (с маской /65).
- В верхней половине выделил /112 под openvpn: один адрес стоит на tun-интерфейсе, другие openvpn раздаёт клиентам.
- Когда клиент подключается, выполняется
ip neigh add proxy "$CLIENT_IPV6" dev eth0
(eth0 — это wan). - Стоят опции sysctl:
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.eth0.proxy_ndp = 1
Это работало, когда я это настроил. С тех пор прошло неопределённое время, конфигурация не менялась, только апдейты дебиана накатывались, и сегодня я заметил, что это уже не работает.
Если назначать любые адреса из моего блока /64 на eth0, то снаружи пинг проходит: ко мне от шлюза приходит neighbor solicitation, мой сервер отвечает neighbor advertisement, потом идут echo request и echo reply. Если этот же адрес не стоит на eth0, а используется для vpn (либо в качестве адреса одного из клиентов, либо адреса на tun-интерфейсе), и ndp proxy для него включён, то приходит neighbor solicitation, мой сервер отвечает neighbor advertisement — и тишина, echo request не доходят до моего сервера. Единственная разница — во втором случае neighbor advertisement уходит с link-local адреса на eth0, а в первом случае с того адреса, который запрашивается (потому что он назначен на eth0).
Как можно решить эту проблему, чтобы мои хосты за vpn нормально маршрутизировались?
Спасибо.