在路由IPv6时NAT NAT

我有以下设置:

client(s) <---> (eth0) router (eth1) <---> wan 

我有一个静态的IPv4地址和一个/ 48的IPv6地址块。 我需要把所有的客户连接到(wan)。 每个客户将拥有自己的公共IPv6。 同时,我需要把那些同样的客户NAT到(wan)。

所有的IPv4相关和NAT都正常工作。 来自(eth0)< – >(clients)>的IPv6通信正常工作,而来自(eth1)< – >(wan)的IPv6通信正常工作。

为了给所有的客户提供IPv6,我想到了太多的select:

  • 将路由器作为网关,在每个接口上具有不同的IP。 这听起来像我需要告诉我的ISP通过单个IP路由整个块,所以这不是一个真正的select。

  • 透明地传递IPv6数据包到/从eth0 – eth1,所有客户端都可以与上游网关进行通信(如果不需要保持IPv4兼容性,我实际上会有一个交换机)。

所以,因为我select了第二种select,所以我怀疑:我怎样才能透明地从eth0到eth1传递所有IPv6stream量? 我需要的是一个3级,但是linux的bridgeutils创build了一个2级桥(这也可以桥接ipv4,但我不能这样做)。

这是一个DD-WRT设备,但它几乎是一个embedded式Linux,所以大多数build议,将在Linux上工作,是值得欢迎的。

谢谢。

你可以实现与代理ARP,如果我试图伪桥接ipv4我会这样做:

 echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp echo 1 > /proc/sys/net/ipv4/ip_forward 

你需要用相同的信息(ip_address,netmask和gateway)来设置你的两个网卡,不知道DD-WRT是否允许,确定它不会在web ui上,但它可能允许你从控制台,然后重新检查你的网关,确保你只有网关指向到ISP的接口,如下所示:

 ip route del default dev eth0 ip route del default dev eth1 ip route del $LAN_NETWORK dev eth0 ip route del $LAN_NETWORK dev eth1 ip route add $DEFAULT_GATEWAY dev eth0 ip route add $LAN_NETWORK dev eth1 ip route add default via $DEFAULT_GATEWAY dev eth0 

这是一个使用Proxy-ARP的IPv4伪桥,我猜你可以使用IPv6来做同样的事情。

另一方面,正如我在另一个问题上所说的,即使在第2层中桥接,也可以使用NAT IPv4。

您需要在BR0接口上设置您的IPv4公共地址和IPv4局域网地址,然后像之前告诉过的那样对它们进行NAT转换

 iptables -t nat -A POSTROUTING -j SNAT -s $LAN_NETWORK --to-source $WAN_IP_ADDRESS 

这将解决你的问题,而没有代理arp的麻烦。 问题是这些东西大部分不会从DD-WRT的界面工作。

作为一个更好,更清洁的替代品,你可能会在LAN端添加一个子接口,类似于

 ifconfig br0:1 192.168.1.1 netmask 255.255.255.0 

并使用上面所说的同一个NAT线路

你想NAT你的ipv6连接? 如果是这样,IPv6 NAT的动机是什么? 你有/ 48块,这是绰绰有余。

如果您的路由器具有IPv6function,那么只需要设置正确的IPv6路由。 IPv6路由与IPv4是分开的,所以不应该与IPv4已经有的冲突。