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,你可以使用简单的命令:
原版的**:
在netfilter网站下你可以find:
从ipv6手册页( http://linux.die.net/man/8/ip6tables )
所以这似乎是可能的。 但我还没有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。