PPTP クライアント
関連記事
pptpclient は Microsoft PPTP プロトコルを実装するプログラムです。pptpclient を使うことで、学校や仕事場で使われている Microsoft VPN ネットワーク (あるいは PPTP ベースの VPN) に接続することができます。
目次
PPTP クライアントのインストール
pptpclient パッケージをインストールしてください。
設定
pptpclient を設定する際は、ネットワークの管理者から以下の情報を得る必要があります:
- VPN サーバーの IP アドレスとホスト名。
- 接続する際に使用するユーザー名。
- 接続する際に使用するパスワード。
- 認証 (Windows) ドメイン名。ネットワークによっては必要ありません。
また、トンネルに名前を付ける必要があります。
pptpsetup を使って設定
root で pptpsetup ツールを実行することでトンネルを設定・削除できます。例:
pptpsetup --create my_tunnel --server vpn.example.com --username alice --password foo --encrypt pptpsetup --delete my_tunnel
トンネルを設定したら接続が可能です。
手動で設定
pptpsetup を使わずに、必要な設定ファイルを手動で編集する方法もあります。
options ファイルの編集
/etc/ppp/options
ファイルは VPN クライアントのセキュリティオプションを設定します。ネットワークの接続に問題が発生する場合、オプションを緩める必要があるかもしれません。このファイルには、最低でも lock
, noauth
, nobsdcomp
, nodeflate
オプションを記述する必要があります。
/etc/ppp/options
# Lock the port lock # We don't need the tunnel server to authenticate itself noauth # Turn off compression protocols we know won't be used nobsdcomp nodeflate # We won't do PAP, EAP, CHAP, or MSCHAP, but we will accept MSCHAP-V2 # (you may need to remove these refusals if the server is not using MPPE) refuse-pap refuse-eap refuse-chap refuse-mschap
chap-secrets ファイルの編集
/etc/ppp/chap-secrets
ファイルにはトンネルの認証に使われる認証情報が含まれます。重要な情報を記述するので、このファイルは root だけしかアクセスできないようにしてください:
# chmod 0600 /etc/ppp/chap-secrets
ファイルを編集してください。ファイルのフォーマットは以下の通りです:
/etc/ppp/chap-secrets
<DOMAIN>\\<USERNAME> PPTP <PASSWORD> *
括弧で囲まれた部分を実際の値に置き換えてください。接続にドメインが必要ない場合は <DOMAIN>\\
は省いてください。
トンネルに名前を付ける
/etc/ppp/peers/<TUNNEL>
ファイルにはトンネルごとの設定オプションを記述します。<TUNNEL>
は VPN 接続に使用するトンネルの名前に置き換えてください。ファイルの中身は以下のようになります:
/etc/ppp/peers/<TUNNEL>
pty "pptp <SERVER> --nolaunchpppd" name <DOMAIN>\\<USERNAME> remotename PPTP require-mppe-128 file /etc/ppp/options ipparam <TUNNEL>
上のセクションと同じように、接続にドメインが必要ない場合は <DOMAIN>\\
は省いてください。<SERVER>
は VPN サーバーのリモートアドレスに、<DOMAIN>
はユーザーが属するドメインに、<USERNAME>
はサーバーに接続する際に使用するユーザー名に、<TUNNEL>
は接続の名前に置き換えてください。
接続
正しく設定されていることを確認するために、root で以下を実行:
# pon <TUNNEL> debug dump logfd 2 nodetach
設定が問題なければ、pon
コマンドは終了しません。正しく接続できることを確認できたら、コマンドを終了してください。
VPN に通常接続するには、次を実行:
# pon <TUNNEL>
<TUNNEL>
は先に名前を付けたトンネルの名前に置き換えてください。上のコマンドは root で実行する必要があります。
ルーティング
VPN に接続したら、VPN サーバー上のものにアクセスできるようになっているはずです。リモートネットワークにアクセスするには、ルーティングテーブルに新しいルートを追加する必要があります。
ルートを追加する方法については詳しくは、次の記事を読んでください。例が大量に載っています: PPTP Routing Howto。
スプリットトンネリング
宛先が VPN のネットワークになっているパケットは VPN インターフェイス (通常は ppp0
) を通るようにルーティングする必要があります。以下のようにルートを作成してください:
# ip route add 192.168.10.0/24 dev ppp0
上記の設定で宛先が 192.168.10.* のトラフィックは全て VPN のインターフェイス (ppp0
) を通過するようになります。
全てのトラフィックをルーティング
全てのトラフィックで VPN 接続を通したい場合、以下を実行してください:
# ip route add default dev ppp0
/etc/ppp/ip-up.d で全てのトラフィックをルーティング
/etc/ppp/ip-up.d/01-routes.sh
#!/bin/bash # This script is called with the following arguments: # Arg Name # $1 Interface name # $2 The tty # $3 The link speed # $4 Local IP number # $5 Peer IP number # $6 Optional ``ipparam'' value foo ip route add default via $4
スクリプトには実行可能属性を付与してください。
/etc/ppp/ip-up.d でポートを使ってスプリットトンネリング
/etc/ppp/ip-up.d/01-routebyport.sh
#!/bin/bash # This script is called with the following arguments: # Arg Name # $1 Interface name # $2 The tty # $3 The link speed # $4 Local IP number # $5 Peer IP number # $6 Optional ``ipparam'' value foo echo 0 > /proc/sys/net/ipv4/conf/$1/rp_filter echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/ip_dynaddr ip route flush table vpn ip route add default via $5 dev $1 table vpn # forward only IRC ports over VPN iptables -t mangle -A OUTPUT -p tcp -m multiport --dports 6667,6697 -j MARK --set-mark 0x1 iptables -t nat -A POSTROUTING -o $1 -j MASQUERADE ip rule add fwmark 0x1 pri 100 lookup vpn ip rule add from $4 pri 200 table vpn ip route flush cache
スクリプトには実行可能属性を付与して、/etc/iproute2/rt_tables
に vpn テーブルを追加してください:
201 vpn
切断
VPN から切断するには以下を実行:
# poff <TUNNEL>
<TUNNEL>
はトンネルの名前に置き換えてください。
トラブルシューティング
クライアントの接続がタイムアウトしてしまう場合、クライアントのファイアウォールで GRE が通過できるようになっているか確認してください。iptables の場合、次のコマンドが必要です:
# iptables -A INPUT -p 47 -j ACCEPT
"LCP: timeout sending Config-Requests" でクライアントがタイムアウトする場合、適当なモジュールがロードされていません:
# modprobe nf_conntrack_pptp nf_conntrack_proto_gre
参照
pptpclient の設定に関する詳細情報はウェブサイトで閲覧できます: pptpclient ウェブサイト。この記事の中身はウェブサイトに書かれている Ubuntu のハウツーを元にしています。Ubuntu のハウツーには起動時に接続する方法などのヒントが書かれています。例を修正することでデーモン化あるいはスクリプトにすることで、設定を自動化することが可能です。