Windows TIPS
|
[Network] |
デフォルト・ゲートウェイは1つのみ有効
デジタルアドバンテージ
2002/12/14 |
|
| 対象OS |
| Windows 2000 Professional |
| Windows XP Professional |
| Windows XP Home Edition |
| Windows 2000 Server |
| Windows 2000 Advanced Server |
|
|
 |
| ■ |
デフォルト・ゲートウェイ指定は1つのみが有効である。 |
| ■ |
複数指定すると、最初のものが無効な場合にのみ、代替として利用される。 |
| ■ |
2つのデフォルト・ルートを使いたければ、ルーティング指定を明示的に行う必要がある。 |
|
|
IPアドレスとネットマスク、デフォルト・ゲートウェイ
システムに装着したネットワーク・インターフェイスに対してTCP/IPの設定を行う場合、IPアドレスやネットマスクなどのほかに、「デフォルト ゲートウェイ」情報も設定する必要がある。デフォルト・ゲートウェイとは、ネットワーク・パケットのデフォルトのあて先として指定するルータ(のIPアドレス)のことであり、スタンド・アロンのLAN環境でない限り、必ず指定する必要があるだろう。
 |
| TCP/IPのプロパティ |
| これは、Windows 2000の[ネットワークとダイヤルアップ接続]で、ネットワーク・カード「ローカル エリア接続」のTCP/IPのプロパティを表示させたところ。TCP/IPの設定では、IPアドレスやサブネット・マスク情報に加えて、通常はデフォルト・ゲートウェイ情報もセットする必要がある。 |
| |
 |
このインターフェイスに割り当てるIPアドレスを指定する。 |
| |
 |
ネットマスクとIPアドレスを組み合わせることにより、ネットワーク・アドレスが計算される。 |
| |
 |
IPパケットのあて先が不明な場合には、このデフォルト・ゲートウェイで指定されたIPルータにパケットが送信される。 |
|
TCP/IPでは、IPアドレス(とサブネット・マスク情報)に基づいてIPパケットの送信先を決定している。もしパケットの送信先がローカルのLAN上のホストならば、IPパケットは直接そのあて先へと送信される。しかし、ネットワーク・アドレスが異なる場合は(この画面例で言えば、192.168.0.0〜192.168.0.255以外への送信)、デフォルト・ゲートウェイとなっているルータへパケットを送信するだけで送信操作は完了となる。その後はルータが、実際のあて先のホストまでパケットを届けることになる(同一ネットワークであるかどうかはネットワーク・アドレス部が同じかどうかで判断する。ネットワーク・アドレスについては「基礎から学ぶWindowsネットワーク―1.IPアドレスとは」などを参照)。TCP/IPネットワークでは、このようにしてIPパケットをルータ間で順次転送することにより、1つの巨大なネットワーク・システムを構築している。
2つ以上のネットワークへ同時に接続する
さて、それではシステムにネットワーク・カードが2つ以上装着されているとどうなるのだろうか? ネットワークの環境によっては、2つ以上のネットワークへ同時に接続しなければならないことがある。例えば社内用のネットワーク・システムとインターネットへのアクセス用のネットワークが、セキュリティやネットワーク管理の都合などで分かれている場合や、複数の拠点へのVPN回線などを構築している場合は、管理などの目的でそれらのネットワークへ同時に接続したい場合もあるだろう。このような場合は、1台のマシンに複数のネットワーク・カードを装着して、複数のネットワークへ同時に接続することになる。
システムに2つ目のネットワーク・カードを装着すると、それに対してもTCP/IPの設定を行う必要がある。IPアドレスやサブネット・マスクなどの値は当然設定しなければならないが、「デフォルト ゲートウェイ」の値はどうするべきだろうか?
WindowsのTCP/IP設定では、このように各ネットワーク・インターフェイスごとにデフォルト・ゲートウェイの設定項目があるので、ついついそこにも値を設定してしまいがちだ。だが結論からいうと、これは正しくない設定方法である。デフォルト・ゲートウェイは、あくまでも「デフォルト時のパケットのあて先(となるルータ)」を決めるものであり、それはただ1つしかあってはいけないものである。だから2つの「デフォルト」が存在することはあり得ないはずである。
デフォルト・ゲートウェイの意味
このことは、デフォルト・ゲートウェイがどのように使われているかが分かれば理解できるだろう。以下は、ネットワーク・インターフェイスが1つしかない場合のWindows 2000のルーティング・テーブルの例である(「netstat -r」コマンドか「route print」コマンドで表示できる)。ルーティング・テーブルは、IPパケットの送信先を決めるために使われる内部的な管理テーブルである。システム内部にあるTCP/IPのプロトコル・スタックは、このテーブルを参照してIPパケットの送信先を決めている。
C:\>netstat -r
Route Table
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 50 da 05 4e 40 ...... 3Com EtherLink PCI
===========================================================================
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.0.13 192.168.0.59 1 …デフォルト
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.0.0 255.255.255.0 192.168.0.59 192.168.0.59 1
192.168.0.59 255.255.255.255 127.0.0.1 127.0.0.1 1
192.168.0.255 255.255.255.255 192.168.0.59 192.168.0.59 1
224.0.0.0 224.0.0.0 192.168.0.59 192.168.0.59 1
255.255.255.255 255.255.255.255 192.168.0.59 192.168.0.59 1
Default Gateway: 192.168.0.13
============================================================================
Persistent Routes:
None
|
一番上にある、Network Destinationも、Netmaskもともに「0.0.0.0」となっている行を見ていただきたい(新しいWindows OSでは「ネットワーク宛先」と「ネットマスク」というふうに日本語化されている場合がある)。この行の「Gateway」(もしくは「ゲートウェイ」)欄に表示されているのが、TCP/IPのプロパティ・ページで入力した「デフォルト ゲートウェイ」の値である。これは、ほかのどのネットワーク・アドレス(2行目以下の各行)にもマッチしないIPパケットは、「192.168.0.13」へ送信する、という意味である。
次に示すのは、2つのネットワーク・インターフェイスが装着されたシステムの例である。インターフェイスごとに異なるデフォルト・ゲートウェイを設定している(各インターフェイスのデフォルト・ゲートウェイは「ipconfig /all」コマンドでも確認できる)。
C:\>netstat -r
Route Table
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 50 da 05 4e 40 ...... 3Com EtherLink PCI
0x1000004 ...00 e0 18 00 1d de ...... Intel(R) PRO Adapter
===========================================================================
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 10.10.0.1 10.10.0.122 1 …1つ目のルート
0.0.0.0 0.0.0.0 192.168.0.13 192.168.0.59 1 …2つ目のルート
10.10.0.0 255.255.255.0 10.10.0.122 10.10.0.122 1
10.10.0.122 255.255.255.255 127.0.0.1 127.0.0.1 1
10.255.255.255 255.255.255.255 10.10.0.122 10.10.0.122 1
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.0.0 255.255.255.0 192.168.0.59 192.168.0.59 1
192.168.0.59 255.255.255.255 127.0.0.1 127.0.0.1 1
192.168.0.255 255.255.255.255 192.168.0.59 192.168.0.59 1
224.0.0.0 224.0.0.0 10.10.0.122 10.10.0.122 1
224.0.0.0 224.0.0.0 192.168.0.59 192.168.0.59 1
255.255.255.255 255.255.255.255 192.168.0.59 192.168.0.59 1
Default Gateway: 192.168.0.13
===========================================================================
Persistent Routes:
None
|
この例では、Network DestinationもNetmaskもともに「0.0.0.0」となっている行が2行あることが分かるだろう(1行目と2行目)。つまり、デフォルトが2通りあるということである。
TCP/IPのルーティングという視点から見ると、いずれも対等なので、TCP/IPのプロトコル・スタックでは、どちらか一方だけを正式なデフォルト・ゲートウェイとして扱うことになる。ただし、実際にどちらのルート(インターフェイス)がデフォルト・ゲートウェイになるかは分からない。このnetstatコマンドの表示結果では、上と下という上下関係があるので、上の方(あるいは下の方)が優先されるような気がするかもしれないが、それはたまたま表示がそうなっているだけで、どちらが選ばれるかは分からない。
実際のWindowsのTCP/IPでは、内部のインターフェイスの登録(活性化)の順番などにも依存しているようであり、はっきりとしたことはいえない。ルーティングの仕様では、右端に表示されている「Metric」の値を基にして、これの小さい方が優先されることになっている。だが、ご覧の通り、どちらも同じ「1」なので、どちらが選択されるかは分からないし、どちらが選ばれたとしてもそれは正しい動作といえる。
デフォルト・ゲートウェイは1つだけにする
このようにデフォルト・ゲートウェイの設定は、各TCP/IPのインターフェイスごとに可能だが、正しい設定方法としては、どれか1つのインターフェイスでのみこの値を設定し、そのほかのインターフェイスでは未記入(空白)のままにしておかなければならない。そうするとデフォルト・ルートがただ1つだけに決まり、常に正しく管理者の意図した通りのルーティングが行われるようになる。
それでは、インターフェイスごとに異なるルーティングをしたい場合はどうすればよいのであろうか? このような場合は、管理者自身が静的なルートをrouteコマンドで追加するか(route addコマンドを使い、あて先ネットワークごとにゲートウェイを追加する)、RIPのような動的なルーティング情報を受け取るサービスを利用すればよい(Windows XPならば「RIPリスナ」サービスをインストールする)。なおroute addコマンドで追加したルートは、システムを再起動するとなくなってしまうので、常に同じルートを使いたい場合は、「-p」オプション(pは「persistent=持続的な」の略)を指定する必要がある(routeコマンドの詳細についてはTIPS「ルーティング・テーブルを操作する」を参照)。
複数のデフォルト・ゲートウェイを指定する意味
WindowsのTCP/IPプロパティでは、インターフェイスごとにデフォルト・ゲートウェイを指定できるだけでなく、それぞれのインターフェイスに「複数」のデフォルト・ゲートウェイを指定することもできる。これは実はゲートウェイの冗長化(耐障害性の向上)のために使われる。少し分かりづらいが、複数のルートを定義するためにではなく(そのためには、上で述べたように、routeコマンドで追加すること)、あるデフォルト・ゲートウェイが利用できない場合に、「代替として」利用するためにこのような設定が可能になっている。
WindowsのTCP/IPでは、常に1つのデフォルト・ゲートウェイしか利用しない。しかし何らかの理由でそのゲートウェイへの送信ができない場合(インターフェイスがダウンしていたり、ARP呼び出しに応答しなかったり、送信したもののICMPのエラー通知が戻ってきたりするなど)、代替として指定されているゲートウェイへ通信を行うことになっている。このような場合に備えて、複数のゲートウェイを指定できるようになっている。
もしデフォルト・ゲートウェイを2つ(以上)設定するのなら、そのいずれのルートを通っても、目的とするあて先へ到達できるようなルートを設定しなければならない。片方はインターネットへつながっているが、もう片方はローカルのネットワークへしかつながっていないというようなネットワークを、2つのデフォルト・ゲートウェイとして指定してはいけない。例えばインターネットへのルートをデフォルト・ゲートウェイとして指定するのなら、いずれのルートを通ってもインターネットへ到達できるような、2つのルータを、デフォルト・ゲートウェイとして設定する。
なおルーティング・テーブルを設定する場合は、送信したIPパケットが正しく戻ってくることができるように、(経路途中のルータにおいて)逆方向のルーティング情報も設定しておく必要がある。具体的な注意点などについてはTIPS「ネットワークのルーティングは双方向で設定する」を参照していただきたい。
|
この記事と関連性の高い別のWindows TIPS |
|
|
generated by
|
|
| 更新履歴 |
| 【2003/08/23】複数のデフォルト・ゲートウェイに関する記述を、より詳細に加筆しました。 |
TechTargetジャパン
Windows Server Insider フォーラム 新着記事
キャリアアップ