SNAT在IP6Tables

Netfilter表示他们支持ipv6的SNAT和DNAT。 我看下ip6tables的man页面,看到有SNAT和DNAT列出。 所以我的问题是你如何为他们制定规则? 我尝试使用iptables的规则相同的结构,但ip6tables没有NAT表和SNAT / DNAT是虚拟状态。 所以我不知道做什么样的修改,例如:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT – 到1.2.3.4

适用于ip6tables。 谢谢您的帮助!

编辑**:你需要一个3.7+的内核,因为这是当他们发布ipv6的NAT表。 然后你使用iptables 1.4.17,你可以使用简单的命令:

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

原版的**:

在netfilter网站下你可以find:

  • 各种networking地址和端口转换,例如NAT / NAPT(IPv4和IPv6)

从ipv6手册页( http://linux.die.net/man/8/ip6tables

  • SNAT
  • 虚拟状态,如果原始源地址与回复目标不同,则匹配。
  • DNAT
  • 虚拟状态,如果原始目标与回复源不同,则匹配。

所以这似乎是可能的。 但我还没有find它的用法的例子。

IPv6没有NAT。 IPv6的一个要点是消除NAT。 NAT(主要)是为了扩展IPv4空间的可用量而发明的。 通过IPv6,我们可以回到互联网上所有端点的原始devise中。

我有一个nat表:

 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代码的一个相当新的补充。

但是我必须重申Michael Hampton:

更不用说,如果你甚至在IPv6部署的背景下考虑NAT,那么有些东西是非常错误的,你需要重新审视你的networkingdevise。