解決PPTP錯誤:ppp:compressor dropped pkt

服務器版本:CENTOS 6.4

內核:2.6.32-358.6.2.el6.x86_64

服務:PPTP服務。

故障:搭建好PPTP服務後使用還算比較正常,但是系統會出現報錯,如下:

wKioL1RZ03-yyzqPAATdc5MdzWM202.jpg

 

    使用×××訪問大部分網站都是正常的,但是我需要訪問這個網站的時候就無法訪問了:www.wellsfargo.com,這個站點出故障的機率和中500萬的機率差不多,所以還是×××的問題,那麼問題就來了,找根本原因吧。

經內事百度,外事谷歌後得知:

     原因是由於MTU的原因,具體問題請自行google.解決辦法是通過打補丁,但是我們沒搞明白,更沒有去動手。默認的MTU爲1396,如下圖。

wKiom1RZ3B7ySGMgAAHbRmT7Gfk276.jpg

那解決辦法不就是改變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"

    經過一翻努力和實驗,終於找到了解決辦法。

解決方法:

  1. /etc/pptp/ip-up這個文件有點意思,可能就是拔號是運行的一個腳本,那麼我們看一下。

  2. vim /etc/pptp/ip-up 

  3. #!/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了。

wKioL1RZ35OikOLIAAHbhNhhjlU049.jpg

 

 7.訪問富國銀行正常了,錯誤日誌已不再有,完美解決該問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章