Debian

DS-Lite:擴展的 NAT 綁定表

  • November 12, 2021

我正在嘗試設置 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。

注意:我注意到該主題缺乏資源,這很遺憾。這正是我在這裡問的原因。任何幫助表示讚賞!

好的,我現在確實做到了。讓我帶你完成我設置它的過程。我的配置部分在重新啟動後仍然存在。

首先,我用 2 個 B4、1 個 AFTR 和手動設置的所有系統對此進行了測試。

另外我假設您的 AFTR 有 IPv6 地址2000::1,第一個 B4 有地址2000::2,第二個有地址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)網際網路。但這並不意味著它們可以相互接觸,在實驗時不要忘記這一點。

終於解決了…

引用自:https://unix.stackexchange.com/questions/561915