Как сделать NETMAP по nftables

У меня в локальной сети есть несколько домашних серверов, подключающихся к интернету через adsl. Мой роутер - сервер x86 на базе linux, и я написал на нем скрипт. Я обновил скрипт до nftables несколько месяцев назад...

Все заработало в ipv4....

Однажды я обнаружил, что мой isp предоставляет ipv6 от dhcp-pd. Поскольку адрес ipv6 может измениться, будет трудно установить статические глобальные адреса ipv6 на серверах. Тогда я подумываю об использовании уникальных локальных адресов. Мне нужно что-то вроде: ip6tables -t nat -A POSTROUTING -o eth0 -s fc00::/64 -j NETMAP - до 2006::/64 для nat адресов для глобальных адресов (и с надлежащими правилами dnat) Но Я не могу найти ничего подобного в nftables...

Я проверил официальную вики: nft_nat

Но я не могу понять, как использовать nft_nat.

Если в ipv4 это блок /24, можно даже перечислить все адреса на карте. Но действительно невозможно перечислить блок / 64 в ipv6...

Так есть ли способ сделать netmap с помощью nftables? Или я должен вернуться к таблицам ip(6)? Или любое другое предложение?

Спасибо.

1 ответ

Для тех, кто, как и я, ищет актуальный ответ, перевод сетевого префикса с отслеживанием состояния, также известный как NPT/NPTv6/NAT66, можно выполнить с помощьюnftables. Для этого есть обычный вариант использования — RFC 7157, IPv6 Multihoming Without Network Address Translation .

Просто поместите следующее правило в хук постмаршрутизации nat (используйте свой размер префикса):

      ip6 saddr <local-prefix>::/64 snat ip6 prefix to <public-prefix>::/64

Вы можете добавить к правилу префиксoifname "<outgoing-interface>"чтобы соответствовать только пакетам, исходящим из определенного интерфейса.

Другие вопросы по тегам