1. 程式人生 > >Linux Ubuntu系統之PPP撥號經驗分享

Linux Ubuntu系統之PPP撥號經驗分享

近期,工作需要,我負責開發PPP撥號模組。
說起撥號,算算時間,我已經做過2次了, 暴露年齡了,呵呵。

第一次是剛畢業做的PPOE撥號,給電信做撥號軟體,在河北石家莊工作過一段時間,基於windows xp。

第二次是在移動網優,3G手機路測,即著名的TD-SCDMA,基於AT指令控制手機驅動。

這次,是用的PPPD撥號,在Linux系統下。
pppd 撥號模組,Linux系統是自帶的, 就像windows下自帶的RAS撥號一樣,印表機等很多應用需要通過撥號方式進行通訊的。

Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-161-generic x86_64)
pppd 2.4.5

參考文件,配置4個檔案:

/etc/ppp/peers/myvpn 賬號資訊

remotename myvpn
linkname myvpn 
ipparam myvpn
pty "pptp *** --nolaunchpppd --loglevel 0"
lock
nodeflate
name ***
usepeerdns
require-mppe
noauth
require-mppe-128
defaultroute
mtu 1416 #特別關鍵!!!

/etc/ppp/chap-secrets VPN使用者名稱密碼

user pass

/etc/ppp/options 預設設定項

lcp-echo-failure 10 # (from /etc/ppp/options)
lcp-echo-interval 10 # (from /etc/ppp/options)
lock
crtscts
nodeflate
persist
asyncmap 0
noauth
hide-password
noipx

/etc/ppp/options.pptp 設定項

lock
noauth
refuse-pap
refuse-eap
refuse-chap
refuse-mschap
nobsdcomp
nodeflate
require-mppe-128
ipparam myvpn
defaultroute

個人總結的技巧:

  • 一定要升級python3.4 --> python3.7?

我開始很糾結Python版本,程式碼開發是Python3.7最新版,而Ubuntu自帶的是Python 3.4, 故想辦法升級python3.7,如果在本地網速很快,這個不是什麼難事,1小時工作量。

但是,遠端連結SSH,VPS伺服器在國外,網速卡的厲害,本來1小時工作,忙乎了一個上午才搞定,升級到python3.6 + pip3 。 但是一想,我還有n個伺服器呢,故晚上加班把程式碼降級為pyhon 3.4,這樣部署就方便多了 -- 非原則問題,不要在環境上折騰太久,條條大路通羅馬嘛。

這個事情,給我很大的啟示:不要做戰略的矮子,再勤勞的執行力, 團隊的效率也上不來的。

平衡、成本、決策!

  • 部署python程式,background job running

windows開發C#很多年,除了前幾年做Unity3D開發的遊戲APP(含VR、AR),這些都是有GUI介面的,而在Linux下,第一個門檻就是無UI介面。
除錯程式通過,部署後,我關閉ssh下班了,吃完飯,遠端ssh,怎麼我的python程式不見了,驚訝不已,才***行程式碼,而且我寫的是 while true 迴圈,不可能自己退出啊。
nohup python3 main.py &
ps ax | grep py

上網搜尋,多虧google,很快就明白了,SSH通過22埠,開啟了一個“session”,一般,如你執行 python3 main.py,隨著SSH Session結束,Linux會kill這個process的。 而這個PPP撥號程式需要作為一個長時間執行的,故需要用 nohup 和 & 關鍵字,這樣當你退出ssh,這個程式會駐留系統。

那麼問題來了,查詢執行的process,常用的 ps all就是不靈了。

要用 ps ax | grep py 才可以。

  • linux常用工具工具

    • [ ] vi 編輯器,linux運維必備神器!
    • [ ] cat /var/log/syslog | grep pppd #輸出mylog.log, search pppd
    • [ ] cat /var/log/syslog | tail -n 100 #輸出mylog.log 檔案最後100行
    • [ ] egrep -v '#|^ *$' /etc/ppp/options #正則,列出配置檔案起作用的
    • [ ] * ">" /var/log/syslog #clear syslog
    • [ ] * dhclient -v -4 : refresh network #重新獲得IP.

參考文件:

  1. https://superuser.com/questions/949520/wvdial-ppp0-and-setting-default-route-automatically
  2. https://askubuntu.com/questions/891393/vpn-pptp-in-ubuntu-16-04-not-working
  3. http://www.cnblogs.com/simonshi/archive/2010/04/23/1718984.html