Linux を PPTP サーバとして稼動する

SERVER

Linux Slackware 7.1 を使用して、PPTP サーバを構築してみました。

ただちょっと暗号化まわりの設定で不安が残ります。


PPTP

PPTP (Point-to-Point Tunneling Protocol) とは、VPN (Virtual Private Network) を実現するためのプロトコルの一種で、これを利用することによって双方で暗号化されたパケットをやり取りすることができるようになります。

これを利用することで、インターネットを越えた先にあるプライベートネットワークへ接続することができ、安全にデータのやり取りが行えるようになります。

今回はこの PPTP を Linux 上に実装してみることにしました。

 

必要事項

システム

Linux

Linux カーネル 2.2.x 以降で、IP Masquerade 機能を実装しておく必要があります。

また PPP 2.3.8 が必要で、MS-CHAP のような Microsoft の認証を行う場合には PPP に MSCHAPv2/MPPE パッチを充てる必要があるそうです。

ソフトウェア

PoPToP

SnapGear が提供する VPN です。現在では http://www.snapgear.com/downloads.html#other からダウンロードすることができるようになっています。

この PoPToP、フリーの Linux 用 PPTP サーバソフトウェアで、Windows 9x/NT 系や Linux から接続することができるそうです。

 

インストールの準備

ドキュメント散策

README と INSTALL

アーカイブに入っている README を見てみると、インストールは次のような手順で行うように行うと書いてあります。また、configure のオプションは ./configure --help で見ることが出来るそうです。

./configure

make

make install

そしてインストールが終わると、/usr/local/sbin/ ディレクトリに pppd が出来上がるようです。そして単純に pptpd として起動するか、オプションをつけて起動します。pptpd のオプションは、pptpd -h とすることで見ることが出来るそうです。

また、設定ファイルのサンプルが、アーカイブの /samples/ ディレクトリに用意されています。

 

他に INSTALL というドキュメントも用意されているので見てみると、単純にインストールするには次の手順で行うとのこと。

  1. PoPToP ソースコードのあるディレクトリへ移動する。
  2. ./configure で Makefile を作成する。
  3. make コマンドでコンパイルする。
  4. 場合によっては make check でチェックする。
  5. make install を実行してプログラムとドキュメントをインストールする。
  6. コンパイル時に生成されたバイナリを消す場合、make clean を実行する。./configure 時に生成されたファイルも消したい場合は make distclean を実行する。

というような感じになっています。ちなみに上の番号付けとオリジナル文書の番号付けとは対応していないので気をつけてください。

 

と、いかにも主要そうなドキュメントにはこの程度の情報しか載っていなかったのですけど、これだけではうまくいきませんでした。

他にも http://www.mda.or.jp/~particle/unix/pptp.htmlhttp://garuda.medinfo.m.ehime-u.ac.jp/2001/linuxpptp/ といった細かい情報の載ったサイトも参考にしたのですが、どうしてもうまく Windows XP から PPTP を利用することが出来ませんでした。

実はそれで INSTALL や README を読み直していたところなのですけど。

 

もっと詳しい公式の文書がないか探してみたところ、アーカイブの html/ ディレクトリの中にある、HOWTO-PoPToP.txt にもっと細かい話が載っているようでした。

 

HOWTO-PoPToP.txt

非常に細かく、インストール手順が載っています。なのでまずはこれを順を追って整理してみることにします。

なお、はじめの方にシステム要件 (System Requirements) が書かれていますけど、それは既に上で触れたので省略します。

なお、ここの文章は単に本文を追っているだけです (少し手を加えてはいますけど)。実際のインストール記はまたその後で書くことにします。

 

 

まずは PPP と MSCHAP/MPPE のインストールについて触れられています。

Microsoft の認証を行う場合は、MSCHAPv2/MPPE パッチが提供されている PPP 2.3.8 が必須だそうです。Microsoft の認証にこだわらなければ 2.3.x 系の何でもいいと書かれています。

ただ、この記載がどうも 1999/08/13 に書かれたようなので、もしかするともっと先のバージョンのパッチも存在しているかもしれませんね。

 

さて、Microsoft の認証を有効にしたい場合のステップが書かれていました。

まず、ftp://cs.anu.edu.au/pub/software/ppp/ から ppp-2.3.8.tar.gz を入手する必要があるそうです。このとき、パッチを充てる都合上、RPM ではなく必ずソースを取得するようにします。

続いて MSCHAP/MPPE の差分ファイルを取得します。これは http://www.moretonbay.com/vpn/releases/ppp-2.3.8-mppe-others-norc4_TH7.diff.gz から入手可能のようです。

そして SSLeay-0.6.6b の取得。これは ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL/SSLeay-0.6.6b.tar.gz より取得します。

これらの取得した、ppp-2.3.8.tar.gz / ppp-2.3.8-mppe-others-norc4_TH7.diff.gz / SSLeay-0.6.6b.tar.gz を、/usr/local/src/ ディレクトリへもって行きます。

 

そして PPP v2.3.8 のアーカイブを展開します。

また SSLeay を展開して、crypto/rc4/ ディレクトリ内の rc4.h と rc4_enc.c を ppp アーカイブの linux/ ディレクトリへコピーします。

そしてそれに MSCHAP/MPPE のパッチを充てます。

tar xvzf ppp-2.3.8.tar.gz

tar xvzf SSLeay-0.6.6b.tar.gz

cp SSLeay-0.6.6b/crypto/rc4/rc4.h ppp-2.3.8/linux/

cp SSLeay-0.6.6b/crypto/rc4/rc4_enc.c ppp-2.3.8/linux/

zcat ppp-2.3.8-mppe-others-norc4_TH7.diff.gz | patch -p0

 

これでソースファイルの準備は完了です。続いて PPP のコンパイルです。

./configure で Makefile を作成した後、linux/ ディレクトリで kinstall.sh スクリプトを実行します。その後、再びもとのディレクトリへ戻って make コマンドを発行します。

すると pppd/ ディレクトリに pppd が出来上がるので、それを /usr/sbin/ ディレクトリへコピーしてやります。

続いて /usr/src/linux/ ディレクトリへ移動します。そこで make modules SUBDIRS=drivers/net としてモジュールを作成し、make modules_install でモジュールをインストールします。

そして現行の ppp を取り下げ、新たに ppp と ppp_mppe を読み込みます。

./configure

cd linux/

./kinstall.sh

cd ..

make

cp pppd/pppd /usr/sbin/

cd /usr/src/linux/

make modules SUBDIRS=drivers/net

make modules_install

rmmod ppp

insmod ppp

insmod ppp_mppe

 

これで新しい PPP が導入されるようです。あとは設定ファイルの手直しを行います。

設定するファイルとして /etc/ppp/options と /etc/ppp/chap-secrets という2つのファイルが挙げられ、そのサンプルが載っていました。

/etc/ppp/options

lock

debug

auth

+chap

+chapms

+chapms-v2

mppe-40

mppe-128

mppe-stateless

/etc/ppp/chap-secrets

 username * password *

 

PPP のインストールが終わったら、いよいよ PoPToP のインストールです。

まずは http://www.moretonbay.com/vpn/download_pptp.html から最新の PoPToP を入手します。

このドキュメントでは 0.9.11 が最新版とされていますが、このドキュメントが入っていたアーカイブ自体が 1.0.1 のようですので、やっぱり少々古いドキュメントのようです。

PoPToP (pptpd-0.9.11.tgz) をダウンロードしたら、それを /usr/local/src/ ディレクトリで展開します。そして ./configure -> make -> make install という手順でインストールを行います。

もし RPM パッケージをダウンロードした場合は、prm --install pptpd-0.9.9-1.i386.rpm としてインストールすることが出来るそうです。

なお PoPToP は /usr/local/sbin/ にインストールされるそうです。また、デバッグ情報は daemon ディレクティブの .debug に出力されるそうです。

 

次の設定ファイルが存在していて、設定が次のようになっているかを確認します。

/etc/ppp/options

debug

name servername

auth

require-chap

proxyarp

/etc/pptpd.conf

speed 115200

localip 192.168.0.234-238

remoteip 192.168.1.234-238

/etc/ppp/chap-secrets

billy servername bob * 

 

そして、/usr/local/sbin/pptpd を実行することで、PoPToP が起動します。

これでもし接続できない場合には /var/log/pptpd.log で状況を確認することが出来るようです。

 

これでインストールのお話は終わりになっていますが、Windows クライアントからの接続設定に関しても載っていたので簡単に書いておくことにします。

 

 

コントロールパネルからネットワークの設定を起動して、Microsoft Virtual Private Network Adapter というアダプタを、Microsoft 社のアダプタから選択して追加します。

 

そしてダイアルアップネットワークの設定で新規接続を作成します。

その際に先ほど追加した Microsoft VPN アダプタを選択します。そして PoPToP を設定した Linux サーバを指定して、セットアップウィザードを終了します。

そしてさらに、作成した接続のプロパティを微調整します。

"server types" を選択して、"require encrypted password" を有効にします。逆に NetBEUI と IPX/SPX 互換プロトコルは無効にします。

そして TCP/IP の設定で IP ヘッダの圧縮を無効にして、さらにリモートネットワークのディフォルトゲートウェイは使用しないようにします。

 

これで接続できるそうです。ただどのバージョンの Windows の話かはわかりません。

注意書きとして Windows 95 の場合は Microsoft から提供されている Dial Up Networking 1.3 のアップデートを行う必要があるようなことが書かれていました。

 

ソフトウェアのインストール

アーカイブの入手作業

さっそく PPP のインストールを始めてみましょう。

まずは現在、どのバージョンに対するパッチがあるのかを調べてみることにします。

そう思って http://www.moretonbay.com/vpn/releases/ にアクセスしてみたのですけど、なぜか http://www.moretonbay.com/vpn/ と同じページが表示されてしまうようです。----.diff.gz まで入力しても見たのですけど、それでも同じページが表示されてしまいました。

 

いろいろと調べてみると http://mirror.binarix.com/ppp-mppe/ にいくつかそれらしいものがありました。

ただ、ずばり ppp-2.3.8-mppe-others-norc4_TH7.diff.gz というものはなく、しかも種類がいくつかあるようで、どれを入れたらいいのかちょっと判断に迷ってしまいます。

とりあえず http://garuda.medinfo.m.ehime-u.ac.jp/2001/linuxpptp/ さまでも登場している系統の ppp-2.4.1-openssl-0.9.6-mppe-patch.gz を入手してみることにします。

なので ppp も 2.4.1 を使うことにします。これも ftp://cs.anu.edu.au/pub/software/ppp/ からは落とせなくなっているようです。

 

ppp を探していたところ、ドキュメントにもあった MSCHAPv2/MPPE のパッチがありました。http://poptop.lineo.com/download_pptp.html に、いろいろなパッチへのリンクが載っています。

 

ところで MSCHAPv2/MPPE のパッチ、現在は http://poptop.lineo.com/releases/ppp-2.3.8-mppe-others-norc4_TH7.diff.gz からダウンロードすることが出来るようになっているようです。

なのでさっそく、ppp-2.3.8-mppe-others-norc4_TH7.diff.gz を入手しました。他にも ppp 2.3.10 用や 2.3.11 用もあったのですけど、オリジナルは 2.3.8 ということなので、念のため 2.3.8 を使用することにします。

また、http://www.vibrationresearch.com/pptpd/ppp_mppe_compressed_data_fix.diff に、ppp_mppe.c のバグを修正するパッチが公開されていたので、念のためそれもダウンロードしておきます。

SSLeay の方は、まだ ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL/ から入手できるようです。ただ、ドキュメントにあった 0.6.6b は配布されていないようだったので、一番新しい SSLeay-0.9.0b.tar.gz をダウンロードすることにしました。

 

それと PoPToP のアーカイブ。これは http://www.moretonbay.com/ftp/poptop/ からの入手が可能です。ここから poptop.tgz をダウンロードすることにしました。

肝心の PPP ですが、探してみたところ http://ftp.rge.com/pub/communications/ppp/anu/old/ にて ppp-2.3.8.tar.gz が公開されていることがわかりました。

また、ppp-2.3.10 ですが、ftp://ftp.slackware.com/pub/slackware/slackware-7.0/source/n/ppp/ にもあったので、場合によってはこれでもいいかもしれません。

今回は ppp-2.3.8.tar.gz を利用することにします。

 

これで必要なアーカイブがそろったことになります。

SSLeay だけ、ドキュメントとはバージョンが違いますけど、一応上のファイルのダウンロードが完了しました。

 

PPP のインストール

まずは Microsoft 認証に対応した PPP のインストール作業です。

ダウンロードした ppp-2.3.8.tar.gz と SSLeay-0.9.0b.tar.gz を /usr/local/src/ ディレクトリ上で展開します。

tar xvzf ppp-2.3.8.tar.gz

tar xvzf SSLeay-0.9.0b.tar.gz

 

つづいて SSLeay-0.9.0b/crypto/rc4/ ディレクトリの中の rc4.h と rc4_enc.c を、ppp-2.3.8/linux/ ディレクトリへコピーします。

cp SSLeay-0.9.9b/crypto/rc4/rc4.h ppp-2.3.8/linux/

cp SSLeay-0.9.9b/crypto/rc4/rc4_enc.c ppp-2.3.8/linux/

 

そして MSCHAPv2/MPPE パッチと、MPPE_FIX パッチを充てます。

MSCHAPv2/MPPE パッチは /usr/local/src/ ディレクトリ上で充てる作業をすればいいのですけど、MPPE_FIX パッチは、ppp-2.3.8/linux/ ディレクトリ内で充てないといけないようです。

まぁ、この MPPE_FIX パッチは、ppp-2.3.8/linux/ppp_mppe.c というファイル1つだけを修正するようなので、そのまま /usr/local/src/ 上でおこなって、File to pathc: と聞かれたら、ppp-2.3.8/linux/ppp_mppe.c と入力することにしました。

 

# zcat ../ppp-2.3.8-mppe-others-norc4_TH7.diff.gz | patch -p0

# cat ../ppp_mppe_compressed_data_fix.diff | patch -p0

File to patch: ppp-2.3.8/linux/ppp_mppe.c

#

 

これでパッチ作業は終了です。続いてコンパイルです。

まずは make 前の処理です。この処理は ppp-2.3.8/ ディレクトリと、その先の linux/ ディレクトリの2箇所で行います。

なお、./kinstall.sh を実行した時点で、/usr/src/linux 上のカーネルソースに修正が加わるので気をつけましょう。

 

cd ppp-2.3.8/

./configure

cd linux/

./kinstall.sh

 

これで Makefile の作成と、Linxu カーネルソースの修正が終わります。

 

続いて make を行います。

make 作業は linux/ ディレクトリでではなく、その手前の ppp-2.3.8/ ディレクトリで行います。そして make が終わったら、pppd/ ディレクトリに出来上がった pppd を、/usr/sbin/ ディレクトリへコピーします。

 

cd ..

make

cp pppd/pppd /usr/sbin/

 

つづいて、先ほど Linux カーネルに変更が加わっているので、その処理を行います。

けれどなにやらたくさんのエラーとともに停止してしまいました。はじめの方を見てみると、ppp_mppe.c をコンパイルしようとした時点で、rc4.h と rc4_enc.c という2つのファイルが見つからないそうです。

 

これらのファイルは SSLeay に入っていたファイルなので、これを /usr/src/linux/include/ ディレクトリにコピーしてみることにします。他にも rc4_locl なども必要なようなので、rc4 がつくファイルすべてをコピーしてみました。

 

cp -i /usr/local/src/SSLeay-0.9.0b/crypto/rc4/rc4* dr
ivers/net/

make modules SUBDIRS=drivers/net

make modules_install

あとは新しい ppp と ppp_mppe モジュールの組み込みです。

rmmod ppp

insmod ppp

insmod ppp_mppe

ただ、今回は ppp が使用中とのことで rmmod が通りませんでした。

なので /etc/rc.d/rc.modules ファイルに次の2行を記述して、Linux を再起動することにしました。なお、ディストリビューションは Slackware 7.1 なので、他のディストリビューションでは /etc/rc.d/rc.modules ではないかもしれません。

さて、Linux を起動してみましたが、ppp のバージョンは 2.3.7 と表示されるし、ppp_mppe を組み込もうとすると RC4_set_key が未解決のシンボルを参照しているといわれるしで、なにやらうまくいきません。

 

pppd の方は、pppd --version とやるとちゃんと 2.3.8 を示すので、どこかで間違ったバージョンを表示しているだけという可能性もないとはいえません。

とりあえず重大なのは ppp_mppe.o の組み込みです。

http://garuda.medinfo.m.ehime-u.ac.jp/2001/linuxpptp/ には、make menuconfig と make dep clean をやらないといけないということが書いてあるので、ためしに make menuconfig をやってみることにします。

とはいえ、ちょっと想定している環境が違うのですけどね…。

 

ざっと眺める限りでは、make menuconfig で修正すべき項目はとくになさそうです。なので、続いて make dep clean で、依存関係などを洗い流してみます。

一応、make menuconfig を抜けるときは、設定を保存するという形をとっておきました。

make dep clean

make modules SUBDIRS=drivers/net

make modules_install

けれどやっぱりダメのようです。ふと思ったのですけど、SSLeay はインストールしなくていいのでしょうか…?/あとでわかったのですけど、SSLeay の組み立てはいらなそうです…。

 

ということで SSLeay を作ってみることにします。Configure ファイルの先頭が #!/usr/local/bin/perl となっているのですが、Slackware 7.1 の場合、perl は /usr/bin/perl なので、まずはそこを書き換えます。

cd /usr/local/src/SSLeay-0.9.0b/

./Configure linux-elf

make

make install

 

さて、インストール後、ふたたび /usr/src/linux/ で make dep clean; make modules SUBDIRS=drivers/net を実行してみました。

けれどダメですね…。

思い切って make dep clean bzlilo modules modules_install と、全部を作り直して再起動してみましたが、やっぱりダメでしたね…。

 

さっき出来なかった rmmod ですけど、なにやら bsd_comp というモジュールが ppp を使っていたようで、rmmod bsd_comp とやってから rmmod ppp とやったら、ちゃんと ppp をアンロードできました。

それで、slhc なるモジュールに ppp が依存していたようなのでそれも rmmod slhc として削除してみました。その状態で、あらためて insmod ppp としてみると、ごろごろと未解決のシンボルが…。

  • /lib/modules/2.2.20/net/ppp.o: unresolved symbol slhc_init
  • /lib/modules/2.2.20/net/ppp.o: unresolved symbol slhc_free
  • /lib/modules/2.2.20/net/ppp.o: unresolved symbol slhc_uncompress
  • /lib/modules/2.2.20/net/ppp.o: unresolved symbol slhc_toss
  • /lib/modules/2.2.20/net/ppp.o: unresolved symbol slhc_remember
  • /lib/modules/2.2.20/net/ppp.o: unresolved symbol slhc_compress

そんなわけで、もういちど insmod slhc としてから insmod ppp としてみると、何の問題もなく ppp がロードされました。

ということは、ppp_mppe も何かのモジュールに依存するところ、そのモジュールがロードされていないというのが原因かもしれないですね。ちなみに insmod ppp_mppe ででるエラーは次のとおりです。

  • /lib/modules/2.2.20/net/ppp_mppe.o: unresolved symbol RC4_set_key

 

ということで RC4_set_key について調べてみたのですが、どうやら SSLeay-0.6.6 を使わずに SSLeay-0.9.0 を使用したことがネックになっているようです。

/usr/src/linux/drivers/net/ppp_mppe.c で、#include "rc4_skey.c" がコメントアウトされるらしく、そのコメントを取らなくてはならないらしいのですけど、そのような箇所は見当たらないようです。

 

なければ作ってしまえ、ということで、#include "rc4_enc.c" とか #include "sha1dgst.c" とかいった、C ファイルのインクルード記述の最後に、#include "rc4_skey.c" を追加してみました。

そしてふたたび /usr/src/linux/ ディレクトリに戻って、make modules SUBDIRS=drivers/net としてモジュールを作成しなおして、make modules_install でインストールしてみました。

 

そして、insmod ppp_mppe をやってみると…。なんの応答もなくプロンプトに戻りました。つまり成功ですねw

その後、lsmod としてモジュールが組み込まれているかを確認してみたところ、ちゃんと ppp_mppe が組み込まれていることが確認できました。

 

PoPToP のインストール

PoPToP のインストールは簡単です。

/usr/local/src/ ディレクトリ上で poptop.tgz を展開します。これを次のようにして展開すると pptpd-1.0.1/ というディレクトリが出来上がりますので、その出来上がったディレクトリ内から PoPToP をコンパイルします。

tar xvzf poptop.tgz
cd pptpd-1.0.1/

./configure

make
make install

設定ファイルの準備

今回はとりあえず、サンプルに挙げられたものをほぼそのままに使用してみることにします。

 

/etc/ppp/options

まずは ppp の挙動を決める設定ファイルから。

lock

debug

auth

+chap

+chapms

+chapms-v2

mppe-40

mppe-128

mppe-stateless

require-chap

 

/etc/ppp/chap-secrets

つづいて CHAP 認証のパスワード設定です。

username * password *

とりあえず、ユーザ名が username で、パスワードが password のアカウントを作成してみることにしました。あくまでも実験用です。

 

/etc/pptpd.conf

そして PoPToP の設定です。

speed 115200

localip 192.168.0.1

remoteip 192.168.0.70-99

詳しくは調べていないため、speed パラメータの意味するところがわからないですけど、とりあえずサンプルに近い形で書いてみました。

localip は、PPTP 通信の際にサーバ側が利用するポート番号で、そのサーバ自身に割り当てられている IP でもかまわないようです。また remoteip は、接続してきたクライアントに当てられる IP アドレスのようです。

 

PoPToP 起動と接続実験

さて、設定も終わったはずなので、PoPToP を起動してみます。

/usr/local/sbin/pptpd

 

これで PoPToP が起動しました。

 

さあ、クライアントから PPTP 接続してみましょう。

とりあえず Windows XP Home Edition で、ネットワーク接続から VPN を一つ作ってやってみたのですが、いろいろとパラメータをいじってみてもつながりませんでした。

認証まで行くし、ログを見る限りは認証をパスしているのですけど、その後でサポートされていない認証だとかいって切断されてしまいます。

 

サーバが悪いのだろうと思いつつも、ためしに Windows 2000 Server から同様に VPN を作って接続してみると、なんと接続できるではないですか。パラメータはディフォルトのまま、接続先のサーバを指定したらみごと接続することが出来ました。

 

Windows XP と 2000 Server での設定の違いといったら…。

「ネットワーク」 に QoS パケットスケジューラが入っているということと、VPN の詳細設定でマルチリンクのネゴシエートにもチェックが入っているということと、TCP/IP の詳細設定で、「リモートネットワークでディフォルトゲートウェイを使う」 にチェックが入っているというところでしょうか。

なのでためしにネゴシエートにチェックを入れて、ゲートウェイを使用する設定で接続してみることにしました。

やっぱりだめですね。暗号化の種類がサポートされていないそうです。うーん、Windows XP では接続できないのでしょうか…。ちょっと残念…。

 

認証レベルが違うということは、セキュリティのカスタム設定をしたらいいのかとおもい、いろいろといじってみました。

そうすると、「暗号化は省略可能」 で、「CHAP」 認証のみをチェックした場合、Windows XP でもちゃんと接続することができました。

ただこの場合、接続時のパスワードはいちおう隠されるでしょうけど、通信自体は隠されないそうです。もしかして Windows 2000 Server でもこの CHAP を使っていたのでしょうか・・・。

 

さらに試しに 「暗号化は省略可能」 で 「MS-CHAP」 を選んでみると、これは接続可能でした。接続状態の詳細情報を見ても、しっかりと MS-CHAP で接続されていることがわかります。

では 「MS-CHAP v2」 では…。これも大丈夫でした。接続状態も MS-CHAP v2 です。

 

これらをそうまとめにして、設定を整えてみました。

設定はほぼすべてディフォルトで、変更箇所は一箇所だけです。それは 「セキュリティ」 タブの 「データの暗号化を必要とする」 のチェックをはずすというところです。

こうすることで、問題なく(?) VPN に参加することができました。

ただ、やっぱりこれから察するに、データ自身は暗号化されていないのでしょうか。う〜ん、そのあたりはまだ確認していないのですけど、なんとも中途半端な感じの VPN になってしまいました。

 

ちょっと気になって、Windows 2000 Server の PPTP サーバに接続してみたところ、状態の詳細のところに 「暗号化 MPPE 128」 という文字がありました。「圧縮 MPPC」 という文字もあります。

ところが今回の Linux の場合は、「暗号化」 という項目がありません。とすると、もしかするとまだ、ppp_mppe がうまく機能していないのかもしれません。ちなみに圧縮も 「なし」 になっています。

ついでに Windows NT Server 4.0 上の PPTP サーバに接続もしてみましたが、この場合は Windows 2000 Server のときと同じ、MPPE 128 / MPPC になっていました。

 

接続中に、サーバで lsmod と打ち込むと、used の項が、ppp_mppe が 0 なのに対して、ppp のほうは 2 になっていました。これは ppp_mppe が使われていないということなのでしょうか…??

が、Windows 2000 Server から接続してみると、ppp_mppe と ppp の両方がそれぞれ 2 を示しました。そのときの接続の詳細を見ると圧縮はないものの、暗号化が 「MPPE 40」 になっていました。

 

ということは、この Linux が MPPE 128 に対応できていないのと、Windows XP の方もまた MPPE 40 で要求しないことがあげられそうですね。

ならばとばかりに、/etc/ppp/options の中の mppe-128 の先頭に # をつけてコメントアウトしてみます。そうして再び Windows XP から接続すると、なんと暗号化として 「MPPE 40」 が有効になりました。

ただこれでも、暗号化必須の設定にしてしまうとなぜだかつながらなくなってしまいますけど。まあ、MPPE-40 ながらも暗号化はかけられたようなので、とりあえずは良しとしましょうv