我正在尝试将 Linux VM 用作另一台 VM 的 IPv6 互联网网关。我安装了一台服务器,该服务器的 ipv6 前缀为 2001:abcd:1234:5678::/64(请注意,出于隐私原因,我编辑了前缀)
设备 1:我设置了接口 eth0(WAN),地址为 2001:abcd:1234:5678:ffff::1/120 我设置了接口 eth1(LAN),IP 为 fd12:3456:7890::1234
我使用了以下 iptables 规则:
-A FORWARD -o eth0 -i eth1 -s 2001:abcd:1234:5678:ffff::/120 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -o eth1 -i eth0 -d 2001:abcd:1234:5678:ffff::/120 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
通过 sysctl 正确设置选项:net.ipv6.conf.all.forwarding=1
设备可以正常访问IPv6互联网。
设备 2:我有 eth0,其 IP 为 2001:abcd:1234:5678:ffff::2/128,网关为 fd12:3456:7890::1234
我可以正常访问 fd12:3456:7890::1234 和 2001:abcd:1234:5678:ffff::1,但任何到 WAN 的传出连接都会挂起,如设备 1 上的 conntrack 所示:
tcp 6 118 SYN_SENT src=2001:abcd:1234:5678:ffff::2 dst=2a00:1450:400e:803::200e sport=43438 dport=80 [UNREPLIED] src=2a00:1450:400e:803::200e dst=2001:abcd:1234:5678:ffff::2 sport=80 dport=43438 mark=0 use=1
并且设备 2 的 IP 2001:abcd:1234:5678:ffff::2 无法进行互联网解析,这可能是导致挂起的原因。
我的设置哪里出错了?如何让第二台设备通过第一台设备接入互联网?
答案1
每个子网都需要一个单独的 /64。
您不能直接将设备 1 的 WAN 接口的地址放在 LAN 侧的设备 2 上。WAN 侧的路由器不知道如何连接。
您将需要第二个 /64,并且需要配置路由器,以便它知道可以使用设备 1 作为网关来访问第二个子网。
根据您的网络,最佳解决方案可能是 DHCPv6-PD 或静态路由。您必须询问您的网络管理员。