ルーターマシンを作る for NTT フレッツADSL
一般的にIPルーターとして使用するマシンには以下のようにNICを2枚入れて市販ルーターのようにWAN側とLAN側として使用すると思います。CATV網などを使うネットワークではDHCPや固定設定によってWAN側のNICにIPアドレスが付与されてIP通信が行われるので、こうしなければなりません。これにならい、フレッツADSLを使用しているほとんどの人がこうしているようですし、私も最初はそれが当り前だと思っていました。
でも、フレッツ接続ツールの挙動を見ていてなんか変だな??と思ったのです。WAN側のNICにはIPアドレスは割り当てられておらず、WindowsがDHCPでのIPアドレス取得に失敗した時に自動的に割り当てられるアドレス(169.254.xxx.xxx)が割り当てられたままなのです。ISPから割り当てられたIPアドレスは後述しますが、仮想的なアダプタに割り当てられます。
フレッツ接続ツールをインストールした時にフレッツ接続ツールが新たなネットワークアダプタ(仮にフレッツアダプタとしましょう)を追加する点を私は見逃しませんでした。
つまりこういう仮説を立てたのです。
で考えたのがこのような方法です。
一つのHubに他のPCと同じようにADSLモデムを繋いでしまいます。
ただ、ADSLモデムは内部でクロス配線されれていないのでカスケード接続用(または、Hub用などスイッチで切り替えるタイプのHubもあります)のポートに接続します。(Hub同士を繋ぐのと同じです)
実験に使用したマシン「GWPC」の環境は以下のとおりで、Windows2000を使っています。設定の画面は少し違いますが、「インターネットの共有」機能はWin98SE/MEにもありますので同じことができます。
エクスプローラーでネットワークとダイヤルアップ接続を見ると、このように3つのアダプタが登録されています。わかりやすいように全て名前が付けてありますが、デフォルトの状態だと「ローカルエリア接続1/2/3」などとなるはずです。
で、WAN側に使用していたアダプタが「ne2000」でLAN側に使用していたアダプタが「corega」です。フレッツアダプタが「FletsADSL」です。
アダプタ「FletsADSL」の共有設定を以下のようにしてあります。
今回はNICが3つ以上あるので、どのアダプタ経由で共有するか選択画面が出ていますがアダプタが(フレッツアダプタを含め)2つなら共有のチェックボックス以外は出てきません。
この場合、「FletsADSL」を使用する接続を「corega」経由で共有するという設定です。
この状態で、GWPCにインストールしたフレッツ接続ツールで接続します。
このGWPCは一度NICを2枚入れた状態で使用していたので元のNIC「ne2000」に接続されたADSLモデムをフレッツ接続ツールが覚えているのでエラーになります。(そのようです(^^; )
「ne2000」経由でサーバーに接続出来なかったので、「corega」側に切り替えて良いかどうかですね。もちろんOKします。(NICが一枚の場合でこの実験をする場合はこの問い合わせは出ないと思いますが・・・ 当然ですね)
で、もう1回やって見てちょうだいということですね。
で、接続には成功しました。「corega」側はWindowsの共有機能の制限で必ず192.168.0.1に固定されてDHCPサーバー機能が有効になります。(変更する方法もあります)
この状態をipconfigコマンドで見ると以下のようになります。
Windows 2000 IP Configuration Ethernet adapter FletsADSL: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 203.136.xxx.xxx Subnet Mask . . . . . . . . . . . : 225.225.225.0 Default Gateway . . . . . . . . . : 203.136.xxx.xxx Ethernet adapter ne2000: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 0.0.0.0 Subnet Mask . . . . . . . . . . . : 0.0.0.0 Default Gateway . . . . . . . . . : Ethernet adapter corega: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 192.168.0.1 Subnet Mask . . . . . . . . . . . : 225.225.225.0 Default Gateway . . . . . . . . . : |
「ne2000」には何も接続せず、ipconfig /releaseでアドレスを開放してあるのでIPアドレスは0.0.0.0です。
この状態でGWPCから外へ出られるか確認します。大丈夫ならクライアントPC#1/#2でも確認します。全て大丈夫でした。
データの流れが理解出来ない人は以下の図を見てください。
たとえば、クライアントPC#1と外界との通信を例にします。
仮想的なNIC「FletsADSL」(フレッツアダプタ−オレンジ色)によって太点線のような仮想的な接続が確立されます。
たとえばクライアントPC(上)と外界のデータの流れは論理的には太赤線のようになります。
実際にはフレッツアダプタは物理的に存在しませんから同じネットワーク内に存在しながらデータは一度GWPC内を通ってクライアントPC#1に到達します。
HubとGWPCの間には同じデータが2度流れる(正確にはマスカレード処理があるので、同じものではないのですが)事になるのでボトルネックになりそうな気がしますが、たかだか最大でも1.5Mbpsの2倍ですからこの程度の処理は最近のマシンにはなんの負担にもなりません。タスクマネージャでみている限りはルーティングの有無は負荷に現れませんでした。
なお、Windowsのインターネットの共有機能については以下のサイトが大変参考になります。CATVでの事例なので、当然ながらNICを2枚入れてますが、フレッツADSLでフレッツ接続ツールを使用する場合は上記のように1枚で動作可能です。
http://www.watch.impress.co.jp/pc/docs/article/20000614/catv11.htm
あと、WindowsマシンをルーターにしてフレッツADSLを使用する場合「Path MTU Discovery Black Hole問題」が発生します。
典型的な症状として、GWPCマシンでは問題ないのにクライアントPCでは見れない(タイムアウトになる)ページが出てきます。
技術的な詳しい説明は以下を参考にしてください。
http://csx.jp/~fex/adsl/mtu-ja.html(最近URLが変更になりました)
回避方法を簡単に言うと、
http://www.dslreports.com/front/drtcp.html
ここでツールを落としてきてクライアントマシンで実行します。
Adapter Settingsでアダプタを選択したらMTUに「1454」といれて「Apply」を押し、マシンを再起動させます。
レジストリをいじれる人は
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{アダプタID}の中に「MTU」を作ってデータに「1454」を入れても同じことです。
以上の2点は興味はありますが試していません(^_^;(意味もありませんし・・・)
あと、上記の使い方が技術的に本当に正しいものかどうかなどは詳しく調べていませんし、私も詳しくはありません。内容は一切担保できませんので、あらかじめご了承ください。
また、なにか間違っていましたらメールや掲示板でご指摘いただければ嬉しいです。
NIC
ネットワークインターフェースコントローラーの事で、一般的にはEthernetカード(LANカードとも呼ばれてますが)を指すことが多いと思います。でも、Windows2000やMEなどはIEEE1394カードとかもNICとして認識されます。
01.10.14 Misaki
01.10.15 一部修正
01.12.19 リンク修正
</HTML>