Обычно, в случае IPv6, в другую сеть маршрутизируют целую подсеть. Для этого необходимо получить отдельную сеть от хостера, либо же разделить бо́льшую сеть (например, /56) на несколько меньших (например, /64), но эта сеть обязательно должна быть «заведена» на сервер в помощью маршрутизации, а не её назначением на интерфейс.
В вашем случае, полагаю, у вас всего одна /64-подсеть, из которой один из адресов уже назначен серверу. Это означает, что сеть назначена на интерфейс, а не настроена маршрутом на него. В этом случае оборудование хостера ожидает NDP-анонсы от каждого адреса (клиента). Необходимо настроить NDP proxy, либо тот, что
встроен в Linux, либо отдельный демон на выбор: ndppd, ndp-proxy, ndproxy, autoneighxy.
Больше по теме:
https://www.geeklab.info/2013/05/ipv6-neighbour-proxy/
https://quantum5.ca/2019/03/08/ndp-proxy-route-ipv...
https://mkaczanowski.com/ndppd-ipv6-ndp-proxy/
А прямой ответ на вопрос «Как правильно выдать ipv6?» — запросить у хостера дополнительную подсеть/подсети нужного размера, смаршрутизированные на сервер, и смаршрутизировать их дальше в VPN штатными средствами, без NDP Proxy.
P.S. в OpenWRT встроен собственный отличный NDP Proxy, работающий из коробки и не требующий дополнительных настроек.