服務器版本:CENTOS 6.4
內核:2.6.32-358.6.2.el6.x86_64
服務:PPTP服務。
故障:搭建好PPTP服務後使用還算比較正常,但是系統會出現報錯,如下:
使用×××訪問大部分網站都是正常的,但是我需要訪問這個網站的時候就無法訪問了:www.wellsfargo.com,這個站點出故障的機率和中500萬的機率差不多,所以還是×××的問題,那麼問題就來了,找根本原因吧。
經內事百度,外事谷歌後得知:
原因是由於MTU的原因,具體問題請自行google.解決辦法是通過打補丁,但是我們沒搞明白,更沒有去動手。默認的MTU爲1396,如下圖。
那解決辦法不就是改變MTU嗎?那我手動修改後可以正常訪問富國銀行了,但是下一次拔號後還是1396,沒有從根本上解決,那就需要從根本解決問題。
臨時解決辦法就是編寫一個修改MTU的腳本(網上找的腳本,感謝作者),如下:
#!/bin/sh CURRENT_MTU="`ifconfig $1 | grep -Po '(?<=MTU:)([0-9]+)'`" FIXED_MTU="`expr $CURRENT_MTU + 4`" ifconfig $1 mtu $FIXED_MTU echo "Increased MTU for $1 to $FIXED_MTU (from $CURRENT_MTU) to fix MPPE Microsoft Point-to-Point bug #330973"
經過一翻努力和實驗,終於找到了解決辦法。
解決方法:
/etc/pptp/ip-up這個文件有點意思,可能就是拔號是運行的一個腳本,那麼我們看一下。
vim /etc/pptp/ip-up
#!/bin/bash # This file should not be modified -- make local changes to # /etc/ppp/ip-up.local instead PATH=/sbin:/usr/sbin:/bin:/usr/bin export PATH LOGDEVICE=$6 REALDEVICE=$1 [ -f /etc/sysconfig/network-scripts/ifcfg-${LOGDEVICE} ] && /etc/sysconfig/network-scripts/ifup-post --realdevice ${REALDEVICE} ifcfg-${LOGDEVICE} /etc/ppp/ip-up.ipv6to4 ${LOGDEVICE} [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@" exit 0
4.ip-up文件中有一行顯示的是# /etc/ppp/ip-up.local instead和[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local 就是提示可以運行ip-up.local的腳本,那麼我們將剛纔的腳本放到這個位置,並命名爲ip-up.local,加上+x權限。
5.service pptpd restart
6.×××重新拔號,MTU已變成1400了。
7.訪問富國銀行正常了,錯誤日誌已不再有,完美解決該問題。