《分享》透過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 是什麼以及是如何決定的
♥順子老婆的網拍,請多關照∼
If you don't like something, change it.
If you can't change it, change your attitude.
Don't complain!
|