PPTP(Point to Point Tunneling Protocol)は、マイクロソフト社により提案された暗号化通信のためのプロトコルです。Windows リモートホストからインターネットなどを経由してプライベートネットワークのサーバーへ VPN を確立しセキュアな通信を実現します。PPTP はクライアントサーバー型のシステムで、Windows OS には、PPTP クライアントソフトが含まれています。Linux 上で動作する PPTP サーバーには、 Poptop があります。Poptop は、GPL に基づいて配布されており、マイクロソフト互換の MS-CHAPv2 といった認証プロトコルや、MPPE による暗号方式をサポートします。PPTP クライアント としては、Windows 95、98、Me、NT、2000、XP の PPTP クライアント、Linux PPTP クライアントをサポートします。
認証プロトコルには、CHAP(Challenge Handshake Authentication Protocol:チャレンジハンドシェイク認証プロトコル)、MS-CHAPv1 、更に強力な MS-CHAPv2 などがあります。CHAP はセキュリティ上の問題があるため利用が推奨されていません。これらは、通常、PPP(Point to Point プロトコル)を使用したダイヤルアップ接続などで使用される認証プロトコルですが、 PPTP では、認証を PPP レイヤにゆだねているためこれらのプロトコルを利用します。暗号化は、MPPE(Microsoft Point-to-Point Encryption)を利用し、鍵長は、40bit、128bit を選択できます。128 bit 長の鍵を使用する場合、Windows 95、98 では MSDun1.4 のアップグレードが必要になります。Windows クライアントの設定例などの情報が、以下サイトの Client configuration に掲載されていますので参考にしてください。
以下のように必要なカーネルモジュールを設定します。Turbolinux 10 Server は初期状態でカーネルモジュールが記述されており特に編集の必要はありません。
alias char-major-108 ppp_generic alias ppp0 ppp_generic alias ppp1 ppp_generic alias /dev/ppp ppp_generic alias tty-ldisc-3 ppp_async alias tty-ldisc-14 ppp_synctty alias ppp-compress-18 ppp_mppe alias ppp-compress-21 bsd_comp alias ppp-compress-24 ppp_deflate alias ppp-compress-26 ppp_deflate |
pptpd の設定ファイルです。# ではじまる行はコメントです。Turbolinux 10 Server の初期状態のファイルには、コメントとして各設定項目の説明が記述されています。最低限記述の必要な項目は以下の通りです。
option /etc/ppp/options.pptpd localip 192.168.0.1 remoteip 192.168.0.234-238,192.168.0.245 |
主な設定項目を以下に解説します。
tty/pty ペアのためのインターフェース速度として PPP デーモンに渡す速度を bps で指定します。
ppp デーモンに渡すオプション設定ファイルのパスを指定します。Turbolinux 10 Server はデフォルトで /etc/ppp/options.pptpd となっていますのでそのまま使用することができます。
Poptop の持つ DOS 攻撃への防御策の一つです。Poptop はコネクションを継続する前に最初のパケットをチェックします。このパケットを保持する秒数を指定します。
指定をすると、syslog により詳細なログを出力します。
ブロードキャストリレイモードを有効にします。ここで指定したインターナル用インターフェイスで受信したブロードキャストをすべてクライアントに送信します。
ローカル IP アドレス、または範囲の指定です。カンマ(,)で区切った IP アドレス、ハイフン(-)で区切った範囲、および両方を指定することができます。例えば、192.168.0.234,192.168.0.245-249,192.168.0.254 のように指定します。pptp で接続された場合にローカル側に割り当てたいアドレスの指定です。
クライアント(リモートホスト)に割り当てる IP アドレスのリスト指定です。最低でも同時接続クライアント数分のリモート IP アドレスが必要であり、アドレスの予備も指定すべきです。アドレスプールの不足は syslog に出力されます。指定方法は、localip と同様です。
クライアント(リモートホスト)に割り当てる IPX アドレス範囲の指定です。
pptpd がリクエストを受け付ける IP アドレスの指定です。省略時にはローカルホストのすべてのネットワークインターフェースの IP アドレスで受け付けます。
pptpd の PID 格納ファイルの指定です。Turbolinux 10 Server の初期状態ではデフォルトと同じ /var/run/pptpd.pid が指定されており変更する必要はありません。
認証や暗号化に関する設定を行う ppp オプションファイルです。このファイルのパスは、/etc/pptpd.conf の options で指定され pptpd デーモンから参照されるようになっています。以下は、設定ファイルの例です。Turbolinux 10 Server の初期状態のファイルで最低限編集が必要な項目 name に自分のホスト名を指定すればそのまま使用することができます。# ではじまる行はコメントです。Turbolinux 10 Server の初期状態のファイルには、コメントとして各設定項目の説明が記述されています。
## CHANGE TO SUIT YOUR SYSTEM lock ## turn pppd syslog debugging on #debug ## change 'pptpd' to whatever you specify as your server name in chap-secrets name pptpd auth proxyarp bsdcomp 0 # This option applies if you use ppp with chapms-strip-domain patch #chapms-strip-domain # These options apply if you use ppp with mppe patch # NB! You should also apply the ChapMS-V2 patch # for ppp-2.4.2 refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 # These options will tell ppp to pass on these to your clients # To use ms-wins or ms-dns in options.pptpd it must exist in /etc/resolv.conf #ms-wins your.server.here #ms-dns your.server.here |
主な設定項目を以下に解説します。
シリアルデバイスに対する排他アクセスのためのロック指定です。
認証するホスト名として pptpd サーバーのホスト名を指定します。
通信をはじめる前に認証を行います。
自システムの ARP(Address Resolution Protocol])テーブルに相手の IP アドレスと自システムの IP アドレスを追加します。他のシステムに対して、相手がローカルネットワーク上にあるように見せることになります。
BSD-Compress 方式を使った送出時のパケット圧縮の指定です。nr には 最大コードサイズ、nt には相手側の最大サイズを指定します。nt 省略時には、nrが使用されます。0 は圧縮しません。
認証に CHAP を使用しません。
認証に MS-CHAP を使用しません。
認証に MS-CHAPv2 を使用します。
暗号化にアルゴリズム 128 ビットの MPPE(Microsoft Point-to-Point Encryiption)を使用します。
クライアントに WINS サーバーのアドレスを提供する場合に指定します。
クライアントに WINS サーバーのアドレスを提供する場合に指定します。
Turbolinux 10 Server の pptpd は、TCP Wrappers を使用したアクセス制限を行います。/etc/hosts.allow を編集しクライアントからのアクセスを許可する必要があります。以下の例はすべてのクライアントからのアクセスを許可しています。TCP Wrapper の詳細は 項19.1 を参照してください。
pptpd : ALL |
認証のためのユーザー名とパスワードを /etc/ppp/chap-secrets ファイルに指定します。書式は以下の通りで 1 行に 1 接続ユーザーずつ指定します。
client server secret IP Address |
ユーザー名を指定します。
/etc/ppp/options.pptpd の name で指定をした pptpd サーバー名を指定します。
このユーザーに設定するパスワードを指定します。
リモートホストの 接続元 IP アドレスを指定します。* を指定することも可能です。
PPTPは、TCP ポート 1723 と、GRE プロトコル(IPプロトコル 47 番)を使用します。ファイアーウォールで、これらのパケットを通すよう設定する必要があります。iptables で設定をする場合には以下の例のようにルールを追加します。実際には環境にあった設定を行ってください。
# iptables -A INPUT -p tcp --dport 1723 -j ACCEPT # iptables -A INPUT -p 47 -j ACCEPT |
iptables の設定は以下のように確認できます。
# iptables -L # iptables -t nat -L |
次回起動時にも設定を有効にするには以下のように入力して保存します。
# /etc/init.d/iptables save # chkconfig iptables on |
iptables についての詳細は、第21章 を参照してください。
PPTP サーバープログラムの実体は、pptpd というデーモンです。Turbolinux 10 Server で pptpd の起動や停止を行うには、/etc/init.d/pptpd スクリプトに以下のオプションを指定して実行します。
表 22-12. /etc/init.d/pptpd
| オプション | 操作 |
|---|---|
| start | pptpd デーモンを起動します。 |
| stop | pptpd デーモンを停止します。 |
| restart | pptpd デーモンを再起動します。 |
| status | デーモンの状況を確認します。 |
pptpd を起動するには、以下のコマンドを実行します。
# /etc/init.d/pptpd start |
pptpd を停止するには、以下のコマンドを実行します。
# /etc/init.d/pptpd stop |
Turbolinux 10 Server 起動時に pptpd を自動的に開始するには以下のように chkconfig コマンドを実行しておきます。
# chkconfig pptpd on |
設定ファイルを変更した場合は、変更を反映するために pptpd を再起動します。
# /etc/init.d/pptpd restart |
Windows クライアントからの接続を確認します。以下は、クライアントが WindowsXP の場合の例です。
マイネットワークの "ネットワークタスク" メニューから "ネットワーク接続を表示する" をクリックします。
"新しい接続を作成する" をクリックします。
「新しい接続ウィザード」画面が起動しますので、[次へ]ボタンをクリックします。

"職場のネットワークへ接続する(O)" を選択し[次へ]ボタンをクリックします。

"仮想プライベートネットワーク接続(V)" を選択し[次へ]ボタンをクリックします。

任意の接続名を入力し[次へ]ボタンをクリックします。

Turbolinux 10 Server で構築した PPTP サーバーの IP アドレスを入力し[次へ]ボタンをクリックします。

「新しい接続ウィザードの完了」画面が表示されたら[完了]ボタンをクリックします。以下の画面が表示されますので、PPTP サーバー の /etc/ppp/chap-secrets に登録したユーザー名とパスワードを入力し、[接続(C)]ボタンをクリックします。
