1. 程式人生 > >Linux中VPN頻繁掉線解決方案

Linux中VPN頻繁掉線解決方案

以前一直沒有把在Ubuntu之中連線VPN的配置弄好,今天終於決心一鼓作氣要在Ubuntu中連上VPN。

我需要連線的是這個IPSEC/L2TP的VPN,安裝好racoon,xl2tp,ipsec-tools等包之後,再對各種配置檔案進行一番配置,就可以成功連線上了。(當然實際沒我說的那麼輕鬆,期間遇到的九九八十一難略過不表)

不料連線上之後卻遇到奇怪的情況:VPN每隔2.5min左右就會自動斷線。這種情況下完全沒法使用。由於我在Windows之中連線沒有這種頻繁掉線的情況,所以能確定是Linux中配置的問題。

但是VPN連線的整個過程涉及那麼多程式,我們如何才能確定問題是出在哪一個程式的配置上呢?這時系統日誌檔案就派上用場了:

1 tail -f /var/log/syslog

tail命令的作用是顯示指定檔案的後若干行,而-f使tail不停地去讀最新的內容,這樣有實時監視的效果。這樣我們就打開了一個shell實時監控各種程式輸出的日誌。緊接著我們連線VPN,果然兩分半鐘之後VPN斷線,系統日誌裡輸出了一大堆結果:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Jan 28 00:24:47 BlueShit xl2tpd[31966]: check_control: Received out of order control packet on tunnel 121 (got 0, expected 2)
Jan 28 00:24:47 BlueShit xl2tpd[31966]: handle_packet: bad control packet! Jan 28 00:24:56 BlueShit wpa_supplicant[19490]: wlan0: CTRL-EVENT-SCAN-STARTED Jan 28 00:24:56 BlueShit wpa_supplicant[19490]: nl80211: send_and_recv->nl_recvmsgs failed: -33 Jan 28 00:25:08 BlueShit pppd[31972]: sent [LCP EchoReq id=0x1 magic=0x1d774d1f]
Jan 28 00:25:21 BlueShit xl2tpd[31966]: check_control: Received out of order control packet on tunnel 121 (got 1, expected 2) Jan 28 00:25:21 BlueShit xl2tpd[31966]: handle_packet: bad control packet! Jan 28 00:25:38 BlueShit pppd[31972]: sent [LCP EchoReq id=0x2 magic=0x1d774d1f] Jan 28 00:25:59 BlueShit wpa_supplicant[19490]: wlan0: CTRL-EVENT-SCAN-STARTED Jan 28 00:25:59 BlueShit wpa_supplicant[19490]: nl80211: send_and_recv->nl_recvmsgs failed: -33 Jan 28 00:26:08 BlueShit pppd[31972]: sent [LCP EchoReq id=0x3 magic=0x1d774d1f] Jan 28 00:26:38 BlueShit pppd[31972]: sent [LCP EchoReq id=0x4 magic=0x1d774d1f] Jan 28 00:27:08 BlueShit pppd[31972]: No response to 4 echo-requests Jan 28 00:27:08 BlueShit pppd[31972]: Serial link appears to be disconnected. Jan 28 00:27:08 BlueShit pppd[31972]: Connect time 2.5 minutes. Jan 28 00:27:08 BlueShit pppd[31972]: Sent 27209 bytes, received 29000 bytes. Jan 28 00:27:08 BlueShit pppd[31972]: Script /etc/ppp/ip-down started (pid 31999) Jan 28 00:27:08 BlueShit pppd[31972]: sent [LCP TermReq id=0x2 "Peer not responding"] Jan 28 00:27:08 BlueShit pppd[31972]: Script /etc/ppp/ip-down finished (pid 31999), status = 0x0 Jan 28 00:27:11 BlueShit pppd[31972]: sent [LCP TermReq id=0x3 "Peer not responding"] Jan 28 00:27:14 BlueShit pppd[31972]: Connection terminated. Jan 28 00:27:14 BlueShit avahi-daemon[797]: Withdrawing workstation service for ppp0. Jan 28 00:27:14 BlueShit NetworkManager[1109]: SCPlugin-Ifupdown: devices removed (path: /sys/devices/virtual/net/ppp0, iface: ppp0) Jan 28 00:27:14 BlueShit pppd[31972]: Modem hangup Jan 28 00:27:14 BlueShit pppd[31972]: Exit.

我們仔細分析這幾行和pppd有關的log,發現其中最關鍵的一行No response to 4 echo-requests,發現連線被斷開的原因是4次echo-request都沒有響應。在此行之前確實正好能夠找出4次sent [LCP EchoReq id=0x1 magic=0x1d774d1f],經過一番搜尋及man page閱讀,發現pppd有兩個選項(在/etc/ppp/options.xl2tpd裡)lcp-echo-intervallcp-echo-failure與次有關。LCP的全稱是PPP Link Control Protocal,這兩個選項就是控制pppd每隔lcp-echo-interval時間向VPN伺服器請求響應,若連續lcp-echo-failure次無響應,便斷開連線。

# If this option is given, pppd will send an LCP echo-request frame to
# the peer every n seconds. Under Linux, the echo-request is sent when
# no packets have been received from the peer for n seconds. Normally
# the peer should respond to the echo-request by sending an echo-reply.
# This option can be used with the lcp-echo-failure option to detect
# that the peer is no longer connected.
#lcp-echo-interval 

# If this option is given, pppd will presume the peer to be dead if n
# LCP echo-requests are sent without receiving a valid LCP echo-reply.
# If this happens, pppd will terminate the connection.  Use of this
# option requires a non-zero value for the lcp-echo-interval parameter.
# This option can be used to enable pppd to terminate after the physical
# connection has been broken (e.g., the modem has hung up) in
# situations where no hardware modem control lines are available.
#lcp-echo-failure

雖然man page中沒說預設值,但經過google得知lcp-echo-interval預設為30,lcp-echo-failure預設為3,30*(3+1)恰巧就是2.5min,於是確定問題處在這兩個配置選項上。

我們嘗試在/etc/ppp/options.xl2tpd中將lcp-echo-intervallcp-echo-failure兩個值都改大一些,再重新連線VPN,檢視日誌,結果發現沒次LCP Echo Request的結果都還是無響應,最終一段時間之後VPN都還是會斷線。估計我遇到的伺服器比較特殊,不響應任何LCP-Echo請求。這樣我們就必須關閉LCP-Echo這個功能,但是如何關閉man中和網上都沒有說明。按照man中的說法,只有給出這兩個選項才會有LCP-Echo請求,但事實明顯不是這樣。

按照經驗,我最後嘗試把lcp-echo-intervallcp-echo-failure的值都改成0,在觀察syslog,終於沒有任何LCP-Echo請求,VPN也不會規律地頻繁掉線了。

附上更改後完整的/etc/ppp/options.xl2tpd檔案:

lock
debug
kdebug 1
mtu 1000
lcp-echo-interval 0
lcp-echo-failure 0
nobsdcomp
nodeflate
noaccomp
nopcomp
novj
defaultroute
name username

相關推薦

LinuxVPN頻繁解決方案

以前一直沒有把在Ubuntu之中連線VPN的配置弄好,今天終於決心一鼓作氣要在Ubuntu中連上VPN。 我需要連線的是這個IPSEC/L2TP的VPN,安裝好racoon,xl2tp,ipsec-tools等包之後,再對各種配置檔案進行一番配置,就可以成功連線上了。(當然實際沒我說的那麼輕鬆,期間遇到

Docker_LXC 容器在 Linux 正確獲取 Loadavg 的解決方案

背景 本文主要解決如何在 Linux 容器中正確獲取 Loadavg 資訊。 我們 cat /proc/loadavg 時會發現如下值: $ > cat /proc/loadavg 0.64 0.81 0.86 3/364 6930 這些值的含義依次為:

小米路由mini啟用mentohust連線dr.校園網(附解決方案

前言:本人所在學校(仲愷)使用的校園網是通過Dr客戶端認證上網的,經過測試,也可以使用windows的mentohust進行登陸,在通過web認證實現上網。   Dr客戶端正常工作時會進位制電腦釋放wifi共享網路(有同學使用破解補丁來解決),而men

關於androidpn訊息當伺服器重啟後,客戶端線上的session全部解決方案

XmppManager private void addTask(Runnable runnable) { Log.d(LOGTAG, "addTask(runnable)..."); taskTracker.increase(); synchronized (

linux安裝mysql時報錯解決方案

找了很久才找到,謝謝大神,本人需要找的問題主要是安裝時出錯的解決方法。本人的檔案版本跟原創的版本有點不一樣,需要哪個版本自行選擇。。檔案:MySQL-5.6.40-1.el7.x86_64.rpm-bundle.tar解壓檔案得到安裝檔案:MySQL-client-5.6.4

關於虛擬機Linux系統無法上網之後的解決方案

windows 虛擬 nbsp es2017 ima 學習 .cn 最終 無法 我剛剛安裝好虛擬機上的Linux的時候,宿主機網絡正常,但虛擬機中雖然顯示網絡連接正常,但無法上網,因此我打開了網絡設置 這是默認設置,但上不了網,而按照網上的查找結果,選擇NAT是沒錯的,但

解決無線路由器wds橋接頻繁的辦法

半年前用兩個tplink無線路由器搭建了一個橋接的網路,但是二級路由器總是斷線需要重啟。 經過大半年的摸索,偶然間解決了問題,在這裡共享給為同樣問題困擾的朋友。 我的配置是tp 742做主路由器,連線聯通的光纖。tp 842做副路由器。 開始使用的時候,tp 842總是斷線,無線可以連上,但是上

Ubuntu 16.04無線wifi頻繁及訊號不足解決辦法

從安裝上ubuntu16.04有好幾個月了,每次都會遇到這樣的問題:電腦是雙系統的,在window系統下連線到同一個wifi訊號強,也不掉線。非常穩定,一切換到ubuntu系統就老掉線,掉線就半天連不上。今天在網上檢視,終於解決了這個問題!問題處在此版本的系統配

針對Linux ASP.NET MVC網站 httpHandlers配置無效的解決方案

近期有Linux ASP.NET使用者反映,在MVC網站的Web.config中新增 httpHandlers 配置用於處理自定義型別,但是在執行中並沒有產生預期的效果,伺服器返回了404(找不到網頁)錯誤。經我親自測試,在WebForm網站中,httpHandlers節點的配置是有效的,而在MVC中的確無效

mac電腦iTerm2連結linux伺服器斷解決方案

問題 用windows連結linux伺服器,方式很多,我最經常用的是xshell。但是xshell沒有mac版,那用mac電腦,比較好的命令列軟體是什麼呢?我用的是iTerm2 ,這個功能確實蠻強大,很多人都在用。但是,你用iTerm2 連結遠端linux伺服器,假如你

解決Ubuntu下ADSL頻繁問題

在UBuntu裡配置ADSL很方便,sudo pppoeconf一路設定下去便可以了。然後使用pon dsl-provider命令啟動撥號,使用手動poff斷開撥號連線,而且,我們可以使用plog命令來檢視連線日誌資訊。 但最近遇到一個特別奇怪的問題,每次上次一段時間,一般4~5分鐘,有時2~3分鐘

Linux進程與程及CPU使用率查詢

mage images logs alt 技術 cat png rgs img 一、進程查詢:   ps -e -o ‘pid,comm,args,pcpu,rsz,vsz,stime,user,uid‘   說明:PCPU是Cpu使用率,8核最多是800。   

Html map 實際使用遇到的問題及解決方案

矩形選框 比例 lan fun 分開 寫法 解決方案 介紹 rds 前言:百度了一下html map,嗯嗯,介紹的挺詳細的,如果是初學者,直接看他們的教程,挺好的,就不用我再多說了。 不過我發現一個問題,就是都是介紹map有什麽屬性怎麽用的,這明顯就是照搬文檔自己再改一下嘛

1.0Tensorflow出現編譯問題的解決方案

警告 編譯 計算 源碼安裝 ima gpo 輸入 col sse 跑簡單tf例程的時候遇到這個 sess = tf.Session(),I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supp

集群的session共享問題解決方案

session復制 宕機 active log tab 三方 ase target redis 一. 大致說一下nginx的負載均衡策略 1.輪詢(默認): 每個請求按時間順序逐一分配到不同的後端服務器,如果後端某臺服務器宕機,則自動剔除故障機器,使用戶訪問不受影響。 2

hive 研究:搭建過程遇到的問題以及解決方案

exce rep 命令 net sign 徹底 clas pos nod 1、使用rpm -ivh 命令安裝hive是出現Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY警告 在命令後面加上 --force --n

2018平安產險數據建模大賽 駕駛行為預測駕駛風險遇到的問題及解決方案

機器學習1、數據需要清洗註意在讀取csv格式文件之後需要對空值進行補全類似如下代碼:2、特征工程此處選取以下幾個指標作為分類和回歸的特征3、深度模型失效通過日誌發現 正樣本即Y>0的樣本所占比例在14%左右,深度分類模型可能將所有的數據分為Y=0導致沒有數據進行回歸 所以此處采用傳統方法 使用SVM 方

xpath的ends-with無效解決方案

xpath定位 ends-with xpath中的ends-with() 多測師 xpath定位遇到如下問題://*[ends-with(@id,"多測師")]定位不到以"多測師"結尾的元素

Android漸變圖片失真的解決方案

png 體積 div 利用 出現 情況 子類 ont 如果 在android開發(尤其是android遊戲開發)中有一個很嚴重的問題就是帶有漸變效果的png圖片會出現嚴重的banding(色帶),鑒於這種情況,有幾種可行的解決方法: 1.如果Activity裏面的o

在靜態工具類註入Service的解決方案

空指針異常 靜態屬性 autowire code javascrip ans 當前 muse tco 由於工具類中方法一般都是靜態的,所以要求該屬性也要是靜態的(Service)。 但是由於Spring/SpringBoot正常情況下不能支持註入靜態屬性(會報空指針異常)。