IPv6 网关计算机 - 如何设置路由?

Chr*_*sec 5 iptables ipv6 routing ip-forward

我正在尝试使用 Linux VM 作为另一个 VM 的 IPv6 Internet 网关。我安装了一个服务器,我收到了 ipv6 前缀 2001:abcd:1234:5678::/64 (注意我出于隐私原因编辑了前缀)

设备 1:我设置了地址为 2001:abcd:1234:5678:ffff::1/120 的接口 eth0 (WAN) 我设置了 IP fd12:3456:7890::1234 的接口 eth1 (LAN)

我使用了以下 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
Run Code Online (Sandbox Code Playgroud)

通过 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
Run Code Online (Sandbox Code Playgroud)

并且设备 2 的 IP 2001:abcd:1234:5678:ffff::2 无法通过 Internet 解析,这可能是挂起的原因。

我在设置中做错了什么?如何让第二台设备通过第一台设备上网?

San*_*ann 3

每个子网都需要一个单独的/64。

您不能只将设备 1 的 WAN 接口的地址放在 LAN 侧的设备 2 上。WAN侧的路由器将不知道如何到达。

您将需要第二个 /64,并且需要配置路由器,以便它知道可以使用设备 1 作为网关来访问第二个子网。

根据您的网络,最佳解决方案可能是 DHCPv6-PD 或静态路由。您必须询问您的网络管理员。