PPTP Client

出自 Arch Linux 中文维基

本文內容或本節內容已經過期。

原因: 請提供模板的第一個位置參數以概括原因。 (在Talk:PPTP Client討論)

這篇文章或章節的翻譯不反映原文。

原因:Last updated in 2011, out of sync with English page(在 Talk: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>
注意: 跟剛才一樣,如果你的連接不要求域,忽略範例中的"<DOMAIN>\\"
注意: PPTP遠程主機使用Chap-Secrets文件中的<PASSWORD>

<SERVER>是VPN伺服器的地址,<DOMAIN>是你所屬的域,<USERNAME>是你將要用來連接伺服器的用户名,<TUNNEL>是連接的名稱。

注意: 如果你不需要使用MPPE,你應當從/etc/ppp/options.pptp中移除require-mppe-128這個選項

創建你的連接[編輯 | 編輯原始碼]

用root執行以下命令來確保配置是正確的:

# pon $TUNNEL debug dump logfd 2 nodetach

如果一切都配置好了,pon命令應當不會自動結束。一旦你感覺差不多OK了,就可以終止這個命令。

注意: 另一個用來確保配置正確的命令是ifconfig -a,看看裏面時候有一個名叫ppp0的新驅動,並且還是可用的

執行以下命令來連接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
注意: 所有數據從VPN連接走的話會比正常連接慢一些

使用ip-up.d設置默認路由[編輯 | 編輯原始碼]

注意: /etc/ppp/ip-up.d/下所有腳本將在VPN連接建立的時候自動執行
#!/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網絡。

注意: 和平常一樣,<TUNNEL>是你隧道的名字,<ROUTING COMMAND>是你加入路由表的命令。
#!/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中去,從而幫助你自動化運行。