W2K/XP Pro を使用した、2拠点間双方向 Pass-Through PPTP 接続 の実際

医療法人社団健林会 林整形外科  院長・林道夫


[参考文献] [Home]

I: はじめに

VPN とは自分の LAN と他の LAN をインターネットを介して、かつ夫々の LAN を保護しているファイアーウォールを越えて結びつける 技術で、この技術を使うと遠隔地ににある LAN 同士があたかも専用線で繋がったかのようにシームレスに接続されます。同様の目的を 達成するには幾つかの選択肢があります(表1)。 今回は費用の一番安い方法 4: を選びました。 即ち、W2K Pro (或いは WXP Pro)に実装されるVPN クライアントとサーバーをインストールして起動し、両端に VPN パススルー対応ルータを使用しま した。


表1.通信の種類と性格
    
1: 専用線を導入(公官庁・銀行・企業向け)

LAN・ 専用線 ・LAN 

安全(◎)・安定(◎)・低速・極高価
2: VPN専用装置を導入(企業向け)

LAN・VPN装置・ファイアウォール -- インターネット -- ファイアウォール・VPN装置・LAN

安全(○)・安定(○)・高速・高価
3: VPN機能付BBルータ を導入(SOHO向け)

LAN・VPN機能付BBルータ -- インターネット -- VPN機能付BBルータ・LAN

安全(△)・安定(○)・高速・手が届く価格
機器の価格と性能によって速度とセッション数が決まる
4: OS実装のソフトを使いPPTPパススルールータを使う(個人向け)

LAN (VPN Client)・ルータ -- インターネット -- ルータ・LAN (VPN Server)

安全(△)・安定(○)・高速・廉価・面白い
NAT を越えるためセッション数 1 DIY でやれば費用は無料

2001年12月末現在、米国内で販売されている個人・家庭用の VPN サーバ機能付き BB Routerの価格は 300.00 - 170.00 米ドル程度にまで下がっているようですが、スループットはルータが内蔵するマイクロプロセッサに依存する為 600Kbps 前後 と言われています。



II: 低コストかつフレキシブルなインターネットVPN

インターネット VPN の場合、中継区間にはインターネットを利用するのでインターネット までのアクセス回線部分の通信コストだけで、広域なネットワークを構築することが可能になります。 しかも近年のブロードバンドの普及により、アクセス回線もADSLやFTTHなど広帯域かつ低コストな サービスが揃い、より費用対効果比の高いネットワークが構築できるようになりました。アクセス 回線さえ確保できれば世界中どこからでも接続できるため、全国の中小拠点や一時的な事務所なども フレキシブルに接続することが可能です。。

現行の OS には単独で VPN が構築できるようにセキュリティ・プロトコルを実装しているものがあり ます。こうしたものを利用すれば VPN 装置を導入することなく、最低限のコストでVPN環境が構築出来 ます。ただし、安定性は OS に左右されますが W2K や WXP は相当に安定性を増して来ており、実用 可能です(2005年7月14日現在)。



III: Windows を用いた 双方向 Pass-Through PPTP 接続の設定方法

VPN はルーターやファイアウォールなしでも作る事ができますが、両端の LAN がハッカーに丸見えになりますのでセキュリティの見地 から実用になりません。従って VPN はファイアウォール又はルータと共存する事が前提になり、両端のルータを越えて行われる VPN 通信を Pass-Through VPN Connection と言います。 W2K Pro (WXP Pro) には PPTP、L2TP over IPSec という2つの プロトコルが実装されており(図1)、両端のルータがこれらのプロトコルを処理できるようにファームをアップデートし、 必要なら不足のモジュールを別途インストールします。PPTPパススルーをサポートしているルータでは、GRE (PROTO=47) の設定は チェックするだけで自動で行われます。後は静的 IP マスカレードの設定のみで PPTP が成立します。

1:クライアント PC (W2K/XP Pro)
スタート・設定・コントロールパネル・ネットワークとダイアルアップ接続・新しい接続の作成・ネットワークの接続ウィザードの開始・ 次へ・インターネット経由でプライベートネットワークに接続する・次へ・最初の接続にダイアルしない・次へ・接続先のアドレス(相手 ルータの Global IP Address を入れる)・・・ 後は指示に従っていけば完了します。

2:クライアント側ルータ
Bフレッツ100Mbps用 NTT製レンタルのB-PON型 HA 加入者回線終端装置 (B-ONU) と Linksys社製(Cisco Systems) の FTTH/ADSL Firewall Router、モデル:BEFSR41C-JP V2 (BB ルーター)、 を使用しました。 この機種は IP マスカレードパススルー(PPTP and/or IPSec)の設定が極めて容易でありまた SmileCAM の画像をUL & DL に成功した実績があります。FTTH の場合は実質固定ですが、ADSL の WAN 側 IP アドレスは 頻繁に変わるのでDynDNS.org等でDDNS の設定を行い、変わるたびに
クライアントソフトで自動更新するようにします。静的IP マスカレード転送はWAN側 1723ポートに到達したTCPをPPTPサーバの1723ポートに転送するように設定します。B'フレッツに変更したら WAN 側 IP アドレスは実質固定になりましたが、ルーター設定は以前のままで使用しています。

3:サーバ側ルータ
CATV 30Mbps Modem に繋がる Linksys社製(モデル BEFSR41C-JP V2) BB ルーターに同様の設定を行いました。JCOM 側はそのポリシーに より実質固定に近いですが、念のため同様に DDNS の設定を実行してあります。

4:サーバ PC (W2K Pro)
スタート・設定・コントロールパネル・ネットワークとダイアルアップ接続・新しい接続の作成・ネットワークの接続ウィザードの開始・ 次へ・着信接続を受け付ける・・・ 後は指示に従っていけば完了します。

なおこのシステムで、クライアント・サーバ間に ISDN MN128SOHOSL10 x 2 を用いたダイアルアップ VPN 接続を行い、VNC を用いサーバ 側 PPTP クライアントプログラムを DDNS 経由で既接続クライアント機に対して実行したところ、既接続クライアント側にも着信接続が 確認されました。その後帰宅して、サーバ側(子羊-JCOM)からクライアント側(ADSL)に PPTP 接続を確認しました。両側に PPTP パス スルールータが設置されていれば機器の相性にもよりますが、どちら側からでも繋がることが確認されました。


図1.OSI ネトワーク階層・ VPN 関連プロトコル・ソフトウェアの関係

OSI ネットワーク階層

VPN 関連プロトコル

VPN ソフトウェア

1

アプリケーション層

SSHOpenSSH

2

プレゼンテーション層

3

セッション層

4

トランスポート層

TCP, UDPCIPE, VTun, Zebedee

5

ネットワーク層

IP, IPSec pipesec, FreeS/WAN, W2K・WXP(実装)

6

データリンク層

PPTP , L2F, L2TP PoPToP, W2K・WXP(実装)

7

物理層



V: トンネリングについて

トンネリングとは、通常の通信回線を用いた通信で使われる PPP (Point to Point Protocol) を PPTP (Point to Point Tunneling Protocol) 、L2TP (Layer 2 Tunneling Protocol) などのプロトコルを利用してカプセル化し、かつ内容を暗号化する事を指します。 その結果 IP ネットワーク上で PPP によって提供される既存のユーザ認証やデータ圧縮などのサービスが利用可能になります。 図2に 示すように、通常のPPP ヘッダ・IP ヘッダ・データはまとめて GRE ヘッダでカプセル化されて VPN トンネルを通るデータ部分となり、 それに配送用ヘッダを付けて送信先に配送されます。 

元の LAN に関するルーティング情報はカプセル化・暗号化されて VPN データ部分に内包されるので、普通のルーターは情報を読み出す 事が出来ずルーティングが出来ません。パケットは迷子になりネゴシエーションは失敗します。ルーターにVPN 機能をインストールする 事によってルーティングが可能となり、ネゴシエーションが成功してハンドシェイクが成立します。


図2.PPTP パケットの構造
VPN データ ======== >>>>>
5: データ 4: IP, IPX, NetBEUI ヘッダ 3: PPP ヘッダ
2:GRE ヘッダ
1: 配送ヘッダ


IV: 両端に W2K Pro を用いたリモートアクセス Pass-through PPTP VPN の構築


W2K の VPN では、モデムのダイアルアップと同様に必要に応じてクライアントがサーバーの Global IP にダイアルアップしてネゴシ エーションが開始されハンドシェイクが確立します。 従ってVPN サーバーには Global IP が必要と言う事になりますが、実際は ファイアウォール/ルータに ISP の DHCP サーバーがリースする Global IP を指定し、ルータから LAN 内部サーバーの Private IP に転送します。 またサーバー側ルータの設定として、GRE と PPTP パケットが使用するポートに穴を開け、パケットが通れるように 設定する必要があります。パケットがサーバー側ルータを通過しハンドシェイクが成立すると、ルータに下のようなログが記録されます。

Apr 13 13:08:34 hayashi kernel: Packet log: input ACCEPT eth1 PROTO=6 xx.xx.xx.xx:61152 xx.xx.xx.xx:1723 L=48 S=0x00 I=978 F=0x4000 T=113 SYN (#7)
Apr 13 13:08:34 hayashi kernel: ip_masq_gre(): creating GRE masq for 192.168.xx.xx -> xx.xx.xx.xx CID=C000 MCID=1BDF
Apr 13 13:11:32 hayashi httpd[2696]: connect from 192.168.xx.xx
Apr 13 13:11:38 hayashi httpd[2700]: connect from 192.168.xx.xx

クライアント側のルータは UPnP 対応ファームにアップデートして、UPnP・マスカレードパススルー・マスカレードタイマの設定を行う と通信が出来ますが、タイマが最短の 5分 に設定してあってこの間は排他が効いて他のマシンは切断されます。 これはサーバからの 切断ログです。

Apr 26 15:07:49 hayashi kernel: Packet log: input ACCEPT eth1 PROTO=6 xx.xx.xx.xx:60748 xx.xx.xx.xx:1723 L=48 S=0x00 I=26639 F=0x4000 T=113 SYN (#8)
Apr 26 15:07:49 hayashi kernel: ip_masq_gre(): creating GRE masq for 192.168.xx.xx -> xx.xx.xx.xx CID=0 MCID=53DF
Apr 26 15:07:57 hayashi kernel: ip_masq_pptp_tcp(): CALL_DISCONNECT_NOTIFY xx.xx.xx.xx -> xx.xx.xx.xx CID=0 MCID=DF53

この例では、図3のようにもとの IP, IPX, NetBEUI データと PPP ヘッダは暗号化されて GRE ヘッダでカプセル化され、新しい PPTP 用 の IP ヘッダと PPP ヘッダを付加されて発信側ルータを通過してインターネットに出ます。 そして Global IP で指定された着信側 ルータに到着し内部の VPN サーバに転送されて、配送ヘッダ、GRE ヘッダを脱ぎ捨てて暗号が解読され、着信先 LAN に入ります。  NetBEUI が両端にインストールされ、かつ「着信接続」・プロパティ・ネットワーク・NetBEUI プロトコル・プロパティ に「呼び出し元に ローカルエリアネットワークへのアクセスを認める」にチェックを入れると、「コンピュータの検索」で PC2 を参照出来るようになります。 WXP を VPN クライアントとして PPTP VPN 接続が成立した時の クライアント PC のログ はこの様になります。

なお、ipconfig で確認するとクライアント・サーバ共に NIC は1枚挿しで複数の IP アドレス取得が成立し稼動しています。 しかし、 VPN サーバがリースした VPN アドレスと LAN アドレス間のルーティングが出来ないために、VPN クライアントから LAN アドレスに ping を打っても unreachable となります。


図3.リモートアクセス Pass-Through PPTP VPN の概念図

発信元クライアント PC (Bフレッツ側ルータ) (CATV側ルータ) VPN サーバ (着信先 PC1) 着信先 PC2
VPN: 192.168.90.101
Eth: 192.168.60.**
WAN Global IP -->
Eth: 192.168.70.**
VPN: 192.168.90.100
Eth: 192.168.70.**
Eth: 192.168.70.**

PPP ヘッダ

VPN

IP ヘッダ

VPN

GRE ヘッダ

VPN

暗号化された PPP ヘッダ(PPP スタブ)

VPN

Ethernet

暗号化された IP, IPX, NetBEUI データ


VI: 実効速度


通信回線の LAN-WAN 間公称速度、実効速度はで表1のようになりました。

表1.通信回線の LAN-WAN 間公称及び実効速度(2004年7月5日現在)

キャリア

公称上り速度(実効)

公称下り速度(実効)

1

CATV

2Mbps (1.7Mbps)

30Mbps (21.0Mbps)

2

B'flets

100Mbps (6.3Mbps)

100Mbps (43.5Mbps)

VPN のボトルネックが ADSL 上り 992Kbps から CATV 1.7Mbps に改善したので VPN でファイル転送に要する時間が半分に短縮しました。理論値と だいたい合致しています。
また、 Line Speed tester と言うソフトを 使用して各種 ISP から DL 速度を測定した結果は下表の通りです。ボトルネックが CATV の下り 公称8Mbps であった時代の測定値です。

表2.Line Speed Tester で測定した下り実効速度(2003/01/08 AM6:30-9:30 測定)
PC
JCOM-CATV(下り8M)

2K P3-1Ghz dual

XP Ce-1Ghz

98SE Ce-1.1Ghz

OS による速度差

isp-ASAHI

3.6 / 3.5 (Mbps)

3.5 / 3.5 (Mbps)

2.7 / 2.5 (Mbps)

98SE / XP = 73% 2K = XP

isp-Hi-Ho

4.5 / 4.3 (Mbps)

4.4 / 4.4 (Mbps)

1.8 / 1.9 (Mbps)

98SE / XP = 42% 2K = XP
OS の違いが速度差に表れる。

          
PC
ACCA(OCN)-ADSL(下り12M)

XP P3-733Mhz

XP Ce-1Ghz

XP Ce-950Mhz

98SE P2-450Mhz

OS による速度差

isp-ASAHI

3.0 / 3.0 (Mbps)

3.0 / 3.0 (Mbps)

3.0 / 3.0 (Mbps)

2.3 / 2.3 (Mbps)

98SE / XP = 77%

isp-Hi-Ho

3.0 / 3.0 (Mbps)

3.0 / 3.0 (Mbps)

3.0 / 3.0 (Mbps)

1.7 / 1.7 (Mbps)

98SE / XP = 57%

OS が同じだと CPU クロック差は無視できる。

VPN サーバ機のスペックは W2K Faith Inspire Dual P3_1GHz 、RAM_512MB ;反対側 IIS サーバ機の スペックは WXP MSI Single Celeron_1GHz 、RAM_512MB であり、IIS のルートフォルダに適当な大きさ の JPEG 画像を置き反対側にダウンロードして Line Speed Tester を用い、 ADSL-->CATV の速度を計測 しました。また、 Dual P3_1Ghz 機に VPN と IIS を走らせ CATV-->ADSL の速度を計測しました。
          
表3.Pass-Through PPTP の
スループット
(2003年1月10日16:30 現在)
1回目 2回目3回目4回目5回目

ADSL --> CATV (Kbps)
Ce_1G to P3_1G_dual

741

728

729

680

725

CATV --> ADSL (Kbps)
P3_1G_dual to Ce_1G

950

982

981

968

970

CATV --> ADSL (Kbps)
P3_1G_dual to P3_733M

917

934

990

891

934


上り速度が大きく影響する。

1. J-COM のルータ使用に関する条件: 平成14年2月から自由化・許可制となり、届け出ると新たにドメイン名が付与された。しかし与え られた(ホスト名・ドメイン名)で ping が通らず、WAN 側 IP アドレスを逆引きすると全く異なる(ホスト名・ドメイン名) が表示される事実を報告すると、何を使っても良い事になり実質的に ACCA/OCN と同条件。期待できるサポートは WAN 側接続確認まで。

2. ACCA/OCN のルータ使用に関する条件: 月500円のモデムレンタル料さえ払っていれば、ブリッジ接続、他機種への交換は自由。 期待できるサポートは WAN 側接続確認まで。


VII: 制限事項


1. W2K/XP Proを利用するVPNゲートウェイでは3セッションまで同時接続が可能ですが、ルータのNATを越えるパススルー 機能制限ため現状では1セッションのみ利用可能です。これは他人が侵入出来ないという安全上の利点でもあります。

2. Windows VPN が稼動中は、その PC 上のその他 TCP/IP 通信(メール、ウェブ閲覧など)は不通になります。

3. 静的IPマスカレード転送はWAN側 well-known port に到達した全てのTCPをPPTPサーバの1723ポートに転送するように設定 します。 設定がうまく行くと1セッションの制限は有るものの365日24時間あたかも専用線で繋がったように快適な2拠点間双方向 PPTPトンネルが完成します。

4. WXP は NetBEUI がサポートされない ので、必要な場合は自分で CDROM からインストールします。これでローカルエリア接続・プロパティ・プロトコルに NetBEUI が追加 されます。しかし、VPN のダイアルアップ・プロパティ・ネットワークに NetBEUI は追加されません。


VIII: IPSec について


WindowsのIPsec VPN ゲートウェイによる接続はいまだ成功しておりません。その理由としてリモートアクセスVPNではイニシエータ (発信元)のIPアドレスは接続ごとに変わるのが普通であり、IPsec VPN ゲートウェイが通信相手の正当性認証に使う「Pre-Shared Key認証」のパスフレーズがIPアドレスと関連付けられているため認証に失敗するものと考えられます(2003年9月29日現在)。

また、 LinkSys ルータには IPsec ゲートウェイ機能が標準で内蔵されており、設定が正しければ IPsec 接続が成立するはずです が、これも成功しておりません。原因として、CATV 側ルータの MAC アドレス偽称、CATV 内部のフィルタリング等により IKE 認証が 阻害される為と推定しています(2004年7月21日現在)。


Yahoo!
Google

Mail E-mail to Dr. Hayashi @ 林整形外科