Назад | Перейти на главную страницу

SNAT в IP6Tables

Netfilter заявляет, что у них есть поддержка SNAT и DNAT для ipv6. Я просматриваю страницы руководства ip6tables и вижу, что там перечислены SNAT и DNAT. Итак, мой вопрос: как вы устанавливаете для них правила? Я пробовал использовать ту же структуру правил для iptables, но ip6tables не имеет таблицы nat, а SNAT / DNAT - это виртуальные состояния. Поэтому я не знаю, какие изменения следует внести в пример вроде:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4

применимо к ip6tables. Спасибо за помощь!

РЕДАКТИРОВАТЬ **: вам нужно ядро ​​3.7+, так как тогда они выпустили таблицу NAT для ipv6. Затем вы используете iptables 1.4.17 и можете использовать простую команду:

  • ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

ОРИГИНАЛ **:

На веб-сайте netfilter вы можете найти:

  • все виды трансляции сетевых адресов и портов, например NAT / NAPT (IPv4 и IPv6)

На странице руководства ipv6 (http://linux.die.net/man/8/ip6tables)

  • SNAT
  • Виртуальное состояние, совпадающее, если исходный адрес источника отличается от места назначения ответа.
  • DNAT
  • Виртуальное состояние, совпадающее, если исходный пункт назначения отличается от источника ответа.

Кажется, это возможно. Но я не нашел примеров его использования.

У меня есть нат таблица:

apoc ~ # ip6tables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

И может писать правила SNAT:

apoc ~ # ip6tables -t nat -A POSTROUTING -o eth1 -j SNAT --to 2001:db8::1
apoc ~ # ip6tables -t nat -nvL POSTROUTING
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 SNAT       all      *      eth1    ::/0                 ::/0                 to:2001:db8::1

Это на ArchLinux с ядром 3.10.7-1-ARCH; это относительно недавнее дополнение к коду netfilter.

Однако я должен повторить Майкла Хэмптона:

Не говоря уже о том, что если вы даже думаете о NAT в контексте развертывания IPv6, что-то ужасно неправильно, и вам нужно пересмотреть структуру своей сети.

Нет NAT с IPv6. Один из основных моментов IPv6 - устранение NAT. NAT был изобретен (в первую очередь) как способ увеличить полезный объем пространства IPv4. С IPv6 мы возвращаемся к исходной конструкции, когда все конечные точки в Интернете адресуются со всех остальных конечных точек.