IP6Tables 中的 SNAT

IP6Tables 中的 SNAT

Netfilter 表示他们支持 ipv6 的 SNAT 和 DNAT。我查看了 ip6tables 的手册页,发现列出了 SNAT 和 DNAT。所以我的问题是,您如何为它们制定规则?我尝试使用与 iptables 规则相同的结构,但 ip6tables 没有 nat 表,并且 SNAT/DNAT 是虚拟状态。所以我不知道从以下示例中要进行哪些修改:

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

适用于 ip6tables。谢谢帮助!

答案1

编辑**:您需要 3.7+ 内核,因为那时他们发布了 ipv6 的 NAT 表。然后您使用 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

  • 源地址转换
  • 虚拟状态,如果原始源地址与回复目的地不同则匹配。
  • 基因转移酶
  • 虚拟状态,如果原始目的地与答复源不同则匹配。

所以这似乎是可能的。但我还没有找到它的使用例子。

答案2

我有一张 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

这是在带有内核 3.10.7-1-ARCH 的 ArchLinux 上;它是 netfilter 代码的一个相当新的添加。

不过我必须重申迈克尔·汉普顿的观点:

更不用说,如果您甚至在 IPv6 部署的背景下考虑 NAT,那么一定有严重问题,您需要重新审视您的网络设计。

答案3

IPv6 中没有 NAT。IPv6 的主要目的之一就是消除 NAT。发明 NAT 的主要目的是扩展 IPv4 的可用空间。有了 IPv6,我们就可以回到最初的设计,即互联网上的所有端点都可以从所有其他端点寻址。

相关内容