DS-Lite:扩展 NAT 绑定表

DS-Lite:扩展 NAT 绑定表

我正在尝试设置 DS-Lite AFTR。由于到 B4 的隧道连接地址重叠,正常的 NAT 表不起作用(已尝试过iptables -t nat -A POSTROUTING -j MASQUERADE),如 RFC 6333 中所述。扩展 NAT 表还将包含 B4 发送的数据包的源 IPv6 地址,这意味着 AFTR 知道使用哪个隧道来转发数据包。

如何在 Linux 上进行该扩展?

我使用的是基于 Debian 的系统(Ubuntu 18.04)。

我正在使用ip tunnel add dslite mode ip4ip6 local <IPv6 address of AFTR> remote <IPv6 address of B4> AFTR 建立隧道,每个隧道接口上的地址为 192.0.0.1/29,B4 的隧道接口上的地址为 192.0.0.2/29。

注意:我注意到该 topix 上缺乏资源,这是一个遗憾。这正是我在这里问的原因。任何帮助表示赞赏!

答案1

好吧,我现在已经做到了。让我带您完成我的设置过程。我的配置部分在重新启动后仍然存在。

首先,我用 2 个 B4、1 个 AFTR 和所有手动设置的系统对此进行了测试。

另外,我假设您的 AFTR 有 IPv6 地址2000::1,第一个 B4 有该地址2000::2,第二个 B4 有该地址2000::3。 AFTR 的 WAN 接口在此命名eth0

现在让我们开始吧。

首先,我在 AFTR 和 B4 上手动创建了隧道。

关于 AFTR:

root@AFTR:~# ip tunnel add dslite mode ip4ip6 local 2000::1 remote 2000::2
root@AFTR:~# ip tunnel add dslite2 mode ip4ip6 local 2000::1 remote 2000::3
root@AFTR:~# ip link set dslite up; ip link set dslite2 up
root@AFTR:~# ip a add 192.0.0.1/29 dev dslite; ip a add 192.0.0.1/29 dev dslite2

现在我们已经可以在 B4 上建立隧道了。 B4 1 号:

root@B4-1:~# ip link set dslite up
root@B4-1:~# ip a add 192.0.0.2/29 dev dslite
root@B4-1:~# ip route add default via 192.0.0.1 dev dslite

B4 2 号:

root@B4-2:~# ip link set dslite up
root@B4-2:~# ip a add 192.0.0.2/29 dev dslite
root@B4-2:~# ip route add default via 192.0.0.1 dev dslite

现在隧道已配置并启动。但 NAT 尚未在 AFTR 上实施。

root@AFTR:~# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE (eth0 is the Internet side network card)
root@AFTR:~# echo "1 dslite" >> /etc/iproute2/rt_tables
root@AFTR:~# ip route add default dev dslite table dslite
root@AFTR:~# iptables -t mangle -A PREROUTING -i dslite -j MARK --set-mark 1
root@AFTR:~# iptables -t mangle -A POSTROUTING -j CONNMARK --save-mark
root@AFTR:~# iptables -t mangle -I PREROUTING -j CONNMARK --restore-mark
root@AFTR:~# ip rule add fwmark 1 iif eth0 table dslite
root@AFTR:~# echo "2 dslite2" >> /etc/iproute2/rt_tables
root@AFTR:~# ip route add default dev dslite2 table dslite2
root@AFTR:~# iptables -t mangle -A PREROUTING -i dslite2 -j MARK --set-mark 2
root@AFTR:~# ip rule add fwmark 2 iif eth0 table dslite2
root@AFTR:~# sysctl -w net.ipv4.fwmark_reflect=1

现在 B4 应该能够访问 IPv4(当然还有 IPv6)互联网。但这并不意味着它们可以相互联系,实验时不要忘记这一点。

终于解决了...

相关内容