代理服務器更換centos6半月有余,更換后發現wint系統撥號后訪問 sina.com.cn / iciba.com / 360.com / abot.cn 等部分網站時頁面打不開,而在服務器上或和機房內直接用通過服務器做網關的其它機器都能正常訪問,一直不到其解。
今晚搜索了一下,找到些資料,發現是PPTPD默認的MTU太大,導致鏈路上有些設備堵塞。
解決思路就是把MTU改小些,方法大概有三種:
一、如果開啟了iptables的(驗證過可行)
iptables -A FORWARD -p tcp --syn -s 10.0.0.0/24 -j TCPMSS --set-mss 1356
其中粗體部分換上你的pptp client的IP段
二 、在 /etc/ppp/ip-up 中,exit 0行前添加 (驗證過可行)
ifconfig $1 mtu 1356
看到ip-up中有一行:
[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"
所以也在 ip-up.local文件中添加ifconfig $1 mtu 1356也同效。
三、在PPTPD配置文件中設置:
打開/etc/ppp/options.pptpd
在文件最后添加 mtu1356
繼續前篇博文的內容繼續談談mtu導致訪問非常慢的問題或者直接訪問不了。我們的服務器是aliyun的新加坡服務器,pptp連接成功后,訪問牆外的大多數網站基本毫無壓力,但是放不了百度,好奇怪,都能訪問到被牆的谷歌了,百度難道也被新加坡的牆檔上了嗎?
經過一番百度+谷歌后,發現果真有很多人有這樣的情況。在linux系統下面的ppp0的網卡接口的mtu是1396,而我們windows 客戶端的默認mtu是1496。本來在mtu在路由通信的時候會自協商,可是有些運營商或者主機管理着為了防止DDOS,禁用了ping的功能(不知道能起到防ddos的作用),mtu自協商正好利用ICMP協議來通信的,導致不能協商mtu,發送到pptp服務器的數據包,就會有問題,自然有些網站就訪問不了,有些網站超時的情況。
下面來看看解決ppp0接口mtu的幾種方式。
- 在PPTP的服務端/etc/ppp/options.pptpd 中配置上mtu 1496.
- 給ppp0的接口直接修改mtu值,然后重啟pptp服務即可生效。
ifconfig ppp0 mtu 1496 /etc/init.d/pptpd restart
修改iptables實現
iptables -A FORWARD -p tcp -syn -s 192.168.100.0/24 -j TCPMSS -set-mss 1496
最后重新連接,就能訪問一些因為mtu不統一的問題,訪問不了的網站了。