linux – 在路由IPv6时NATing IPv4

前端之家收集整理的这篇文章主要介绍了linux – 在路由IPv6时NATing IPv4前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下设置:
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上工作的建议都是受欢迎的.

谢谢.

解决方法

你可以用代理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,网络掩码和网关)设置两个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线

猜你在找的Linux相关文章