Shunze 學園 (http://www.shunze.info/forum/index.php)
|- Sophos XG (http://www.shunze.info/forum/board.php?boardid=36)
|-- 《分享》透過IPsec VPN將分公司流量全部導向總公司,怪怪的? (http://www.shunze.info/forum/threadid.php?boardid=36&threadid=2100)


作者: shunze 發表時間: 2020-01-03, 13:55:

《分享》透過IPsec VPN將分公司流量全部導向總公司,怪怪的?

客戶有需要,要將分公司流量透過IPsec VPN全部導向總公司,
然後統一在總公司做網頁控管。

IPsec VPN串好了,但分公司user對外卻有些怪怪的?
有些網站打不開、Line只能通話,無法傳送接收訊息?
這是怎麼回事?



原來這是一個和TCP設定封包所帶的資料上限MSS (maximum segment size)有關的問題。
MSS的預設大小是1460,在這樣全導向總公司的環境中,
封包在分公司經過IPsec再次封裝後,就有可能超過1460的允許大小,而導致部分網站與應用軟體無法正常開啟。

原廠建議修改的大小為1300
我記得在之前的某些版本XG,可以直接在WAN的interface設定中去修改MSS的大小。



但在這個最新的17.5.9 MR-9版韌體中,
修改這個設定是無效的,狀況無法排除!
必需在分公司的XG中,於advanced shell中以iptables指令來設定MSS的大小為1300。

iptables -t mangle -I POSTROUTING -s 192.168.2.0/24 -d 0.0.0.0/0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1300;
iptables -t mangle -I POSTROUTING -s 0.0.0.0/0 -d 192.168.2.0/24 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1300;


查詢iptables指令設定結果如下。
iptables -L -t mangle | grep TCPMSS


不過這個指令不是永久性的,重開機後就失效了。
為了讓它永久性的的生效,可以把它寫在 customization_application_startup.sh 中,
流程如下。
mount -o remount,rw /
vi /scripts/system/clientpref/customization_application_startup.sh
mount -o remount,ro /


完成後的 customization_application_startup.sh 應該有如下的內容。
#!/bin/sh
iptables -t mangle -I POSTROUTING -s 192.168.2.0/24 -d 0.0.0.0/0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1300;
iptables -t mangle -I POSTROUTING -s 0.0.0.0/0 -d 192.168.2.0/24 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1300;
exit 0;


經過以上的調整後,分公司透過總公司連外的奇怪問題總算是一舉排除了∼



參考資料
How to set the MSS value for remote network(s)
IPSec VPN - Path MTU
TCP maximum segment size 是什麼以及是如何決定的

Powered by: Burning Board 1.1.1 2001 by WoltLab
Taiwan Translation by Achi