本文以最差網(wǎng)絡(luò)環(huán)境進(jìn)行設(shè)置, 如果網(wǎng)絡(luò)條件夠好可以降低一部分設(shè)備要求, 同時(shí)可以減少一些不必要的設(shè)置.
前置條件:
2條寬帶均支持ipv6, 且至少其中一條寬帶可以訪問(wèn)到另一條寬帶ipv6的至少2個(gè)udp端口
用到的設(shè)備:
2臺(tái)tp-link高版本的er系列路由器(本文以一臺(tái)er3200g v1.0和一臺(tái)er6110g v4.0為例)
2臺(tái)支持ipv6的小主機(jī)(本文以刷了armbian系統(tǒng)的機(jī)頂盒為例)
設(shè)備連接和部分配置圖:

開(kāi)始配置
配置er6110g (響應(yīng)方, 至少有2個(gè)udp端口能被訪問(wèn)到一方,假如端口為8001和8002)
-
創(chuàng)建vlan
image.png
2.配置nat

3.配置IPSec



配置er6110g下的Linux小主機(jī)
配置端口轉(zhuǎn)發(fā): PortForward u :8001+:8002 192.168.111.1:500+192.168.111.1:4500
PortForward 見(jiàn)前面的文章, 可以創(chuàng)建一個(gè)host網(wǎng)絡(luò)的docker長(zhǎng)期運(yùn)行
配置er3200g下的Linux小主機(jī)
配置端口轉(zhuǎn)發(fā): PortForward u :500+:4500 [2408::6110]:8001+[2408::6110]:8002
假設(shè)[2408::6110]為er6110g的wan口ip
PortForward 見(jiàn)前面的文章, 可以創(chuàng)建一個(gè)host網(wǎng)絡(luò)的docker長(zhǎng)期運(yùn)行
配置er3200g (發(fā)起方)
-
創(chuàng)建vlan
image.png -
配置IPSec
image.png


問(wèn)題排查



優(yōu)化
如果被訪問(wèn)方可以獲取到 ipv6子網(wǎng)前綴 就不需要再配置nat66了, 直接給它下面的Linux設(shè)備分配一個(gè)公網(wǎng)ipv6, 然后讓發(fā)起方直接連擁有公網(wǎng)ipv6的armbian設(shè)備即可. 然后再配合ddns, 直接通過(guò)域名訪問(wèn).
在通過(guò)ipv6進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)時(shí) 建議通過(guò)u2t + t2u進(jìn)行轉(zhuǎn)發(fā), 同時(shí)配置轉(zhuǎn)發(fā)設(shè)備
echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf && sysctl -p
(armbian默認(rèn)為bbr)
原因有2:
a. 一臺(tái)設(shè)備一般可以分配多個(gè)ipv6, 在轉(zhuǎn)發(fā)udp數(shù)據(jù)時(shí)可能存在響應(yīng)方不采用收到數(shù)據(jù)的ipv6地址去響應(yīng)數(shù)據(jù)(前面文章有說(shuō)到過(guò))
b. 在用網(wǎng)高峰期可能會(huì)存在單線程tcp傳輸數(shù)據(jù)慢的問(wèn)題(尤其是跨運(yùn)營(yíng)商, 這個(gè)問(wèn)題困擾了我很久. 即使是公網(wǎng)ipv6直連也存在這樣的問(wèn)題, 和IPSec無(wú)關(guān)). 因?yàn)榇蠖鄶?shù)設(shè)備的 tcp_congestion_control 是CUBIC, 在高延遲 高丟包率網(wǎng)絡(luò)中速度會(huì)非常慢(tcp單線程40兆上行只能跑到5兆左右). 采用tcp傳數(shù)據(jù)后, 用戶(hù)設(shè)備的丟包率就會(huì)變?yōu)? , 壓力全部給到了ipv6數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備, ipv6數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備又采用的bbr 速率會(huì)有非常明顯的提升(單線程幾乎能跑慢帶寬).


