PPTP Client
pptpclient是一個實現Microsoft PPTP協議的程序。因此它能夠被用來接入另一個Microsoft VPN網絡,比如學校和單位。
安裝PPTPClient[編輯 | 編輯原始碼]
pptpclient由安裝包pptpclient提供,運行下列命令可以安裝:
# pacman -S pptpclient
配置[編輯 | 編輯原始碼]
你需要從網絡管理員獲取以下信息來配置pptpclient:
- VPN伺服器的ip或者域名
- VPN隧道名稱
- Windows域(不是所有網絡都需要)
- VPN用戶名
- VPN密碼
編輯配置文件[編輯 | 編輯原始碼]
用你稱手的編輯器打開/etc/ppp/options.pptp。這個文件為你的VPN連接啟用了一系列默認安全設置。如果你連接時候出現問題,你可以自定義配置。你的options.pptp文件最少需要包含以下內容:
lock noauth nobsdcomp nodeflate
編輯密碼文件[編輯 | 編輯原始碼]
下一步,打開或者創建/etc/ppp/chap-secrets。我們將在這個文件裏面存儲你的密碼,記得修改權限讓除root之外所有用戶不能訪問它。這個文件的格式如下:
<DOMAIN>\\<USERNAME> PPTP <PASSWORD> *
如果你的伺服器不要求域,則配置如下:
<USERNAME> PPTP <PASSWORD> *
替換掉上文中範例中的佔位符。注意,如果你的密碼包含特殊字符,比如「$」,你需要用雙引號把它們包起來。
命名你的VPN隧道[編輯 | 編輯原始碼]
用你稱手的編輯器創建類似/etc/ppp/peers/<TUNNEL>的文件,把<TUNNEL>這裏替換成你的VPN連接名。這個文件設置之後看起來如下:
pty "pptp <SERVER> --nolaunchpppd" name <DOMAIN>\\<USERNAME> remotename PPTP require-mppe-128 file /etc/ppp/options.pptp ipparam <TUNNEL>
<SERVER>是VPN伺服器的地址,<DOMAIN>是你所屬的域,<USERNAME>是你將要用來連接伺服器的用戶名,<TUNNEL>是連接的名稱。
創建你的連接[編輯 | 編輯原始碼]
用root執行以下命令來確保配置是正確的:
# pon $TUNNEL debug dump logfd 2 nodetach
如果一切都配置好了,pon命令應當不會自動結束。一旦你感覺差不多OK了,就可以終止這個命令。
執行以下命令來連接VPN隧道:
# pon <TUNNEL>
<TUNNEL>是你之前命名過的VPN隧道名稱。注意使用root命令執行。
配置路由[編輯 | 編輯原始碼]
一旦你成功連接上VPN,你就可以和VPN伺服器交互了。當然在此之前,咱們需要添加一個新的路由到你的路由表,從而可以接入遠程網絡。
你可以閱讀PPTP Routing Howto來獲得更多如何添加路由的信息,裏面還有很多範例。
選擇路由[編輯 | 編輯原始碼]
對我來說,只有傳輸到VPN網絡的數據包才應該走VPN連接,所以我添加如下路由條目:
# ip route add 192.168.10.0/24 dev ppp0
這將路由所有目的地址為191.168.10.xxx的數據到VPN連接。
配置為默認路由[編輯 | 編輯原始碼]
如果你想要所有數據從VPN連接走,下面這條命令包你爽:
# ip route add default dev ppp0
使用ip-up.d設置默認路由[編輯 | 編輯原始碼]
#!/bin/bash # This script is called with the following arguments: # Arg Name # $1 接口名字 # $2 The tty # $3 連接速度 # $4 本地ip地址 # $5 Peer IP number # $6 可選``ipparam 的參數 route add default gw $4
把這個腳本命名為01-routes.sh,然後放在/etc/ppp/ip-up.d/下面。
斷開連接[編輯 | 編輯原始碼]
下面這條命令用來斷開VPN連接:
# poff <TUNNEL>
<TUNNEL>是你VPN連接的名稱。
把一個VPN連接配為默認啟動[編輯 | 編輯原始碼]
你可以在rc.d創建一個快捷命令來實現自動在後台連接VPN網絡。
#!/bin/bash . /etc/rc.conf . /etc/rc.d/functions DAEMON=<TUNNEL>-vpn ARGS= [ -r /etc/conf.d/$DAEMON ] && . /etc/conf.d/$DAEMON case "$1" in start) stat_busy "Starting $DAEMON" pon <TUNNEL> updetach persist &> /dev/null && <ROUTING COMMAND> &>/dev/null if [ $? = 0 ]; then add_daemon $DAEMON stat_done else stat_fail exit 1 fi ;; stop) stat_busy "Stopping $DAEMON" poff MST &>/dev/null if [ $? = 0 ]; then rm_daemon $DAEMON stat_done else stat_fail exit 1 fi ;; restart) $0 stop sleep 1 $0 start ;; *) echo "usage: $0 {start|stop|restart}" esac
注意,我們可以使用updetach和persist這兩個附加命令在pon上。updetach保證pon阻塞知道連接被建立。另外一個命令persist保證網絡自動重練。如果需要開機自動啟動,則添加@<TUNNEL>-vpn到rc.conf的DAEMONS中去。
注意[編輯 | 編輯原始碼]
你可以在pptpclient website查到更多關於pptpclient的配置信息。Ubuntu的幫助手冊也有一些幫助你配置的信息。這些範例能夠很輕鬆的稍加變換從而添加到daemons中去,從而幫助你自動化運行。