client(s) <---> (eth0) router (eth1) <---> wan
我有一个静态IPv4地址和一个/ 48 IPv6地址块.
我需要将所有客户端连接到(wan).每个客户端都拥有自己的公共IPv6.
同时,我需要将那些相同的客户端NAT转换为(wan).
IPv4相关的一切和NAT都运行良好.到/来自(eth0)< - >(客户端)的IPv6通信>工作正常,来自(eth1)< - >(wan)的IPv6通信工作正常.
为了向所有客户提供IPv6,我想到了太多的选择:
>将路由器作为网关,每个接口上有不同的IP.这听起来像我需要告诉我的ISP通过单个IP路由整个块,所以它不是一个真正的选择.
>透明地向/从eth0< - > eth1传递IPv6数据包,因此所有客户端都可以与上游网关通信(如果不需要保持IPv4兼容,我实际上会在这里有一个交换机).
因此,由于我选择了第二种选择,我有疑问:如何透明地将所有IPv6流量从eth0传递到eth1?我需要的是3级桥接器,但linux的bridgeutils创建了一个2级桥接器(它也将桥接ipv4,我不能拥有它).
这是一个DD-WRT设备,但它几乎是一个嵌入式Linux,所以大多数可以在linux上工作的建议都是受欢迎的.
谢谢.
解决方法
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,网络掩码和网关)设置两个NIC,不确定DD-WRT是否允许这样做,确定它不会在Web上使用,但它可能允许您从控制台,然后重新检查您的网关,确保您只有网关指向进入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 lan地址,然后像我之前告诉你的那样对它们进行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线