システム奮闘記:その26

デフォルトゲートウェイって何?



(2004年2月12日に掲載)
はじめに

  LAN接続や、インターネット接続をする際、IPアドレスを割り当てる。
  その時、何も考えずに「ゲートウェイ」のIPアドレスも割り当てる。

Windows98のゲートウェイの設定画面
windows98のゲートウェイの設定画面

  私の場合、ゲートウェイのIPを「ルーターのIP」だと思い、
学生時代、学内LANにパソコンを設定する時は、大学が指定した
ルーターのIPを割り当て、会社員になって、社内LANに接続する時は、
業者が社内LANを設置した際に、設定したルーターのIPを割り当てていた。

  要するに、何も考える事なく、ただ、与えられていたIPを割り当てていた。

 しかも、ゲートウェイの欄は・・・

 絶対に記入すべし!

 と思い込んでいた。
  つまり思考の停止をしていたのだった (^^;;

  そんな時、次のような小さくて閉じたネットワークの時は、ルーターがないので、
ゲートウェイのIPは、どうするのかと疑問なっても不思議ではない。

こんな時は、どうするの?
ハブに4台のパソコンがつながった場合の接続形態

  今まで、上図のような接続形態の設定をした事がないため、考えた事すらなかった。


  しかし、時々ある例で、下図のように、2台のパソコンを接続する場合がある。

  ゲートウェイのIPは必ず割り当てるもの!

  そんな思い込みから、困った末(?)、デフォルトゲートウェイのIPは
通信相手のパソコンのIPを割り当てていた。

こんな時は、どうするの?
2台のパソコンがつながった場合
ゲートウェイのIPを「0.0.0.0」にしていた事もある
ちなみに、Windows2000Proだと「0.0.0.0」ができない。

 ゲートウェイのIPを「0.0.0.0」にするのだから、まさに・・・

  何もわかっていなかった証拠だった!!

  幸い、この設定でも接続可能(なぜ、可能なのかは後述しています)なので
今まで、何ら問題もなく平和に過ごしていた。
  だが、知らないと困る局面に立たされる事になった。

  というわけで「デフォルトゲートウェイって何?」で、副題として
「ルーティングのお勉強」で始めたいと思います。はじまり、はじまり (^^)

デフォルトゲートウェイの勉強するキッカケ

キッカケは、拠点間通信にインターネットVPNを導入する所から始まった。 現在、利用しているフレームリレー回線は、通信速度が64Kで遅い上、 通信費用も高い。 回線増強と通信費用削減のため、インターネットVPNが利用できないかと考えた。 詳しくは「システム奮闘記:その35」(経費削減・インターネットVPNの導入 )を ご覧ください。 まずは、一番要望の強い東京支店から導入しようと考えた。 この時、問題が発生した。本社から各営業所へパケットの交通整理のために 鎮座しているシスコのルーターの存在だった。
東京支店とVPNで結ぶ構想なのだが
鎮座するシスコのルーターに問題が発生・・・
本社と東京支店をインターネットVPNで結ぶ構想

  私は「本社にあるシスコのルーターのルーティングを変更しないと」と思った。
  ルーターには、パケットの交通整理するために、ルーティング(経路制御)機能が
ついている。ルーターに記憶させているパケットの行き先情報の事を、
ルーティングテーブルという。

  以前「最新TCP/IPハンドブック」(若林 宏:秀和システム)を読んだ時に、
ルーターに行き先情報がある事を知ったため、このような、まともな判断ができた。


  さて、いつもなら、金をかけずに自力で設定という所なのだが・・・

  シスコのルーターなんて触られへん (TT)

  だった。
  もちろん、社内で触れる人なんぞいるわけがない。

  そこで、シスコのルーターを納入してもらったJ社にルーティングの
変更する際の見積もりをとってもらう事にした。

J社に出した新しいネットワーク構成図
インターネットVPNへの移行時のネットワークの構成図
東京支店をフレームリレー回線からインターネットVPNに変更するが
いきなり切り替えも危険なので、様子見という形で1、2ヶ月ぐらいは
両方の回線を使う事を考えた。ただし、東京支店でのネットワークは
フレームリレー回線とVPNの回線とは接続しない事にした。
そのため、IPも別々に割り当てる。

この時、私は本社のルーターのルーティングだけ変更すれば良いと思っていた。
そこで、J社に、本社のルーターのルーティングの変更費用の見積もりを依頼した。

  が、待てども、待てども返事が来ない。
  10日経っても解答が来ないので、J社の営業の人に「ねぇ、まだですか?」と、
柔らかめの口調で尋ねた。
  営業の人が耳を疑いたくなる事を言い出した。

 技術の者がVPN上にSNAのプロトコルを流す方法だと・・・

  それを聞いた私は次のように思った
  「アホか! 誰もVPN上にSNAは流さないぞ。それに、メールでキチンと
SNAは流さないと書いたぞ。何を余計な事を考えてるねん。それに、悩むなら
俺の所まで問い合わせをせんかい!」と苛立ちを覚えた。

  でも、ここで怒っても、あまり効果がないので、穏やかな口調で
「でも、VPNにSNAは流さないと書いてますでしょ。悩む事はないですよね。
もし、問題があるなら技術の人と話ますよ」と言った。
  な声で「ねぇ、ねぇ、まだ〜」という風に語りかける。意外と効果がある (^^)
  営業の人が「すぐに出すようにしますので」と返答した。


  しかし、それから1週間が経っても返答が来ない。
  さすがに、我慢も限界なので、もうメールで「もし、技術的打ち合わせが
必要でしたら、私が御社の方へ行っても構いません」と念押しをした。

  ようやく見積もりが出てきた。
  本社と東京支店のルーターの2ヶ所の変更が必要だという。

  金額を見てビックリ!

  ところで、2ヶ所の変更と書いていたので、変に思った。
  「本社のルーターだけで十分やないのか? なんで東京支店のルーターまで?」
と思い、J社に問い合わせた。
  J社によると、東京支店のルーターの変更も必要だという。
  うーん、高い金額に頭を抱えてしまった。


  帰宅途中、困ったなぁと思いつつ、書店に寄った。
  シスコのルーターの設定が、自力で出来ないかと考えたからだった。
  そして、書店でシスコのルーターの本を見た瞬間

  目が点になってしまった  (・・)

  しかも、本の種類が色々ある。何を選んで良いのかも、わからない。

  例え、良い本を選んでも、触るのは基幹業務(AS/400)のパケットが通るルーター。
  変な設定をして、動かなくなっても困る。

  生兵法は怪我の元!

  さすがに恐いので、手を出すのを諦めた (^^;;

理想と現実の狭間で頭を抱える私・・・
社内システムで、設定変更する度に特定の業者に依頼しないといけないのは
あまり良い状態とは言難い。
J社とは比較的、良好な関係だが、ベンダー支配からの脱却という観点から見ると、
何でも、J社に頼らざる得ないのは良くない。
だが、事務員である私に、シスコのルーターを触れる技術なんぞ、
あるわけがない。もちろん、教育を受ける機会も費用もない。
シスコのルーターは、簡単に独学では勉強できる代物ではない。
ユーザーの自立という理想と、技術力がないという現実の狭間で
頭を抱える今日この頃。


打開するための模索。ルーターを作ってみる 翌日、上司とルーターの設定費用の話をした。 上司曰く「1年で元がとれるなら、上に稟議を挙げた方がええで」と言った。 しかし、1年でとても回収なんぞできない。 困ったなぁと思いつつ、良い手がかりを見つけるために、まずは、 ルーティングに関するホームページを探す事にした。 「@IT」というIT関連の情報のページを見つけた。 routeコマンドを使って、LinuxとWindows2000で、ルーターを作る話だった。 この時、「なんで、routeコマンドでルーターができるねん?」と思った。 実は、私はLinuxでルーターを作るのには、Zebraというソフトでないと できないと思い込んでいたのだった (^^;; それは以前(2年くらい前だったと思う)、次のような実験をしたからだった。
以前行った実験内容
以前行ったLinuxでルーターを作る実験図
この時、シスコのルーターのルーティングテーブルには
192.168.20.0/24のパケットの問い合わせ先を記述していない。
だが、当時は、そんな事を知る由もなかった。
実験端末から、私の端末にpingを打ったが、全く反応はなし。
逆に、私の端末から実験端末に、pingを打ったが、全く反応はなし。

その結果「何かソフトがないと、ルーターはできない」と結論づけたのだった。

  今、思えば、実験は失敗するに決まっているのだが、ネットワークの知識がないと
とんでもない結論を平気で出してしまう (--;;

  そして、時が流れ、ある日、Linux関連の本を読んだ時、ルーターになるソフト
「Zebra」を知ったのだった。

 そのため・・・

 ルーターを構築するには、Zebraが必要

 と思い込んだのだった。

ルーティングとデフォルトゲートウェイ

とんでもない誤解をしながら、ズルズルと2004年1月を迎えてしまった。 時期が良く、丁度、雑誌「UNIXマガジン」の1月号を買っていた。 iptablesの内容も面白かったので購入したのだったが、Zebraの記事が書いていた。  iptablesの設定などの話は「システム奮闘記:その21」をご覧ください。  そこで藁をもすがる気持ちで読む事にした。しかし・・・  OSPFって何やねん? だった。 いつもなら、ここからドツボにハマっていくか、それとも 「事務員には不可能!」と開き直って、諦めてしまう。 だが、今回、幸いにして「@IT」のページを発見して、無理にZebraを導入する 必要がない事がわかった (^^;; さて、書店で、シスコのルーターの本を探している時、 IPルーティングの本を見つけた。 ルーティングのは「静的ルーティング」と「動的ルーティング」がある事を知る。
2種類のルーティングについて
静的 ルーターに覚えさせているパケットの経路情報が
固定されている場合の事をいう。
動的 動的ルーティングは、状況に応じて、自動的に経路情報を変更する。
いわば経路情報を固定していない場合の事を言う。

  そこで、私は「シスコのルーターが動的ルーティングの設定だったら、
自動的にパケットの行き先を認識してくれるので、Linuxで構築したルーターを
認識して  ルーティングができる」と思った。
  そこで、もう一度、同じ実験をしてみた。

実験内容
再度、Linuxでルーターを作って動かす実験の図
この時も、シスコのルーターのルーティングテーブルには
192.168.20.0/24のパケットの問い合わせ先は記述していない。
というより、シスコのルーターに記述なんぞできるわけがない。
そこで、シスコのルーターが動的ルーティングだと願い実験をした。

  結果は・・・

 アカンかった (TT)

  だった。

  今、思えば、中小企業のネットワークに動的ルーティングなんてするわけがない。
  しかし、その時は、藁をもすがる気持ちだったので、実験してみたのだった。

  ところで、静的ルーティングだと、ルーティングテーブルに記録されていない
ネットワークへパケットを送る事ができない。
  そのため、ルーティングテーブルを追加する必要がある。

  だが、シスコのルーターの設定変更費用が障壁となって、インターネットVPNの
計画をボツにはしたくない。
  そこで、なんとかシスコのルーターの設定を変更せずに、
うまく実験を成功する方法がないのかと模索した。


  幸い、「@IT」のページを発見で、もう1つ、わかった事があった。
  デフォルトゲートウェイのIPを割り振る理由だった。

  今までは、単にルーターのIPという認識だけだった。
  答えは、他のネットワークへパケットを送る際、パケットを飛ばす先という意味だった。

  この時、初めてデフォルトゲートウェイの意味を知ったのだった!!

  今まで、こんな、いい加減な知識で、ネットワークの設定をやっていたと、
我ながら感心してしまう (^^;;

デフォルトゲートウェイを設定する理由
デフォルトゲートウェイを設定する理由を図にしてみた
IP通信で、ネットワークが違う所同士と通信する場合
ルーターで中継する必要がある。
さて、違うネットワークへパケットを飛ばす場合、経路を知るために
ルーターに問い合わせる必要が出てくる。そのため、経路を聞くため
問い合わせ先のIPをコンピューターに指定する必要がある。
指定したIPを「デフォルトゲートウェイ」として設定する。

  デフォルトゲートウェイが他のネットワークへパケットを飛ばす際の、
飛ばす先である事がわかった。
  ということは、同じネットワーク内のパソコン同士で通信をするなら、
無理にデフォルトゲートウェイを設定しなくても良い事になる。

  試しに、私のWindows98の端末で、デフォルトゲートウェイの設定を外して
同じネットワーク内と、違うネットワークのパソコンにpingを飛ばしてみた。

デフォルトゲートウェイを外した状態で
同じネットワークに、pingを飛ばした場合
C:\WINDOWS>ping 192.168.1.133

Pinging 192.168.1.133 with 32 bytes of data:

Reply from 192.168.1.133: bytes=32 time<10ms TTL=128
Reply from 192.168.1.133: bytes=32 time<10ms TTL=128
デフォルトゲートウェイを外した状態で
違うネットワークに、pingを飛ばした場合
C:\WINDOWS>ping 192.168.7.101

Pinging 192.168.7.101 with 32 bytes of data:

Destination host unreachable.
Destination host unreachable.

  この事から、違うネットワークへパケットを飛ばす時には、
必ず、デフォルトゲートウェイを設定する必要がある事がわかる。
  逆に、同じネットワーク同士のみの通信なら、設定する必要はない事もわかる。


  そこで、私の端末のデフォルトゲートウェイに、ルーターにするLinuxマシンの
IPアドレスを割り当てたら、実験端末へのパケットの経路がわかるため、
実験端末と通信が可能になるのではと思った。
  そこで、次の実験を行なった。

実験内容
Linuxをルーターにして自分のパソコンにデフォルトゲートウェイを割り当て実験を行った図
私の端末のゲートウェイをルータにするLinuxマシンのIPを割り当てた。
その状態で、私の端末と、実験端末との間でpingが飛ぶか実験を行なった。

(注意!)
ルーターにするLinuxマシンで、デフォルトゲートウェイと
ゲートウェイとを分けて書いています。実は、この実験を行なっている時点では、
私は、2つの違いは、わかっていませんでしたが、図をわかりやすくするため、
書きました。この2つについては、後述しています。

Linuxルーターのルーティングテーブル
[root@machine]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
192.168.20.0    *               255.255.255.0   U     0      0        0 eth1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         192.168.1.254   0.0.0.0         UG    0      0        0 eth0

私の端末のルーティングテーブル(Windows98)
C:\WINDOWS>route print

Active Routes:

  Network Address          Netmask  Gateway Address        Interface  Metr
          0.0.0.0          0.0.0.0    192.168.1.100    192.168.1.110
    XXX.YYY.ZZZ.A  255.255.255.255    192.168.1.AAA    192.168.1.110
   AAA.BBB.CC.DDD  255.255.255.255    192.168.1.AAA    192.168.1.110
   AAA.BBB.CC.DDD  255.255.255.255    192.168.1.AAA    192.168.1.110
        127.0.0.0        255.0.0.0        127.0.0.1        127.0.0.1
      192.168.1.0    255.255.255.0    192.168.1.110    192.168.1.110
    192.168.1.110  255.255.255.255        127.0.0.1        127.0.0.1
    192.168.1.255  255.255.255.255    192.168.1.110    192.168.1.110
   AAA.BBB.CC.DDD  255.255.255.255    192.168.1.AAA    192.168.1.110
   AAA.BBB.CC.DDD  255.255.255.255    192.168.1.AAA    192.168.1.110
   AAA.BBB.CC.DDD  255.255.255.255    192.168.1.AAA    192.168.1.110
   AAA.BBB.CC.DDD  255.255.255.255    192.168.1.AAA    192.168.1.110
        224.0.0.0        224.0.0.0    192.168.1.110    192.168.1.110
  255.255.255.255  255.255.255.255    192.168.1.110          0.0.0.0
それにしても、変な設定になっていますが、私は何も触っていないため
Microsoftの理解不能な仕組みの影響ではないかと思う今日この頃。

192.168.1.AAAはNATのプライベートIPアドレス。
XXX.YYY.ZZZ.AはNATのグローバルIPアドレス。

AAA.BBB.CC.DDDは任意のIPアドレス。
出てきたIPアドレスを逆引きしてみたら、Microsoftのサイトだったり
シスコのWebサイトのIPだったので、これらのホームページの
アドレスを正引きする人はいると思うので、そのまま掲載しても
問題なさそうだけど、敢えて、隠す事にしました。

  結果は・・・

    見事、成功 (^^)V

  だった。

  だが、問題は残る。私の端末の場合、デフォルトゲートウェイを、
ルーターにしたLinuxのIPを指定しているため、実験端末へパケットを送る際は、
Linuxのルーターがパケットの経路を教えてくれる。そのため、通信が可能になる。
  しかし、他のマシンだと、Linuxルーターへ問い合わせする設定をしない限り
実験端末への通信ができない。
  なぜなら、実験端末へパケットを運びたくても、どういう経路で行けば良いのか
示してくれるマシンがないからだ。
  そのため、頭を抱えてしまった。

  数日間、悩んだが良い案が浮かばない。
  「万事休す」と思いながら、routeコマンドの設定のWebサイトの注意書きを見た。
  「デフォルトゲートウェイの設定に注意!」という文章を読んだ。
  ルーティングテーブル上に該当しない全てのパケットに関して、経路の問い合わせを
デフォルトゲートウェイのIPのルーターに問い合わせという設定で、横着ができる。
楽といえば楽だが、この設定の状態に気が付かず、ハマってしまう場合があるという。

  この時、ふと、次の事が思い浮かんだ。

頭によぎった事
直感的に、シスコのルーターにも、デフォルトゲートウェイのような
ワイルドカード的な設定があるのではと思った。
シスコのルーターに覚えさせていない経路情報があれば
インターネットとの玄関口のNATマシンへパケットが飛ぶ事を期待した。

  実際に、こういう方法で問い合わせされているかの確証なんぞ全くない。
  だが、実験するのは、タダなので、次の実験を行なった。

実験内容
私の端末の設定は元に戻して、今度は、NATのマシンに細工をした。

NATマシンのルーティングテーブル
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
XXX.YYY.ZZZ.A   *               255.255.255.248 U     0      0        0 eth0
192.168.20.0    192.168.1.100   255.255.255.0   UG    0      0        0 eth1
192.168.0.0     *               255.255.0.0     U     0      0        0 eth1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         XXX.YYY.ZZZ.R   0.0.0.0         UG    0      0        0 eth0
192.168.20.0/24のパケットに関しては、Linuxで構築したルーターへ行くように
設定を行なった。

  結果は・・・

    見事、成功 (^^)V

  だった。
  もちろん、他のマシンからでも、実験端末へのアクセスは可能だった。
  念のため、営業所から実験端末にpingが飛ぶか確認する事にした。

  こういう時は、現地に行かなくても、VNCさえあれば、遠隔操作が可能。
  VNCで、営業所のマシンを遠隔操作して、実験端末にpingを打った。

    見事、成功 (^^)V

  だった。
  うれしさのあまり、思わず「よっしゃ!」と言って、柏手を打った。
  横にいた上司が「どないしたんや?」と聞いてきたので、
ルーティングの設定変更の費用が発生しなくなった事を話したら、
「やるやん」と言ってくれた。

  予感通り、シスコのルーターに登録されていないネットワークへ行く
パケットは全てNATマシンへ問い合わせするようになっている。
  インターネット接続時に、J社の人が社内で使っているネットワーク以外は
全て外へ行くパケットとみなして、そういう設定にしたのかもしれない。

  なんとか、全ての端末のネットワークの設定を変更する事なく、NATマシンの
ルーティングテーブルさえ追加・変更すれば、全てがOKになった。

  (捕捉:2005年3月12日)

  営業所と本社のシスコのルーターのデフォルトゲートウェイの設定が
本当の所、どうなっていたのか謎だったのだが、2004年12月にシスコのルーターの
コンフィグを見る事ができた。

本社に鎮座していたシスコのルーターの設定(抜粋)
no ip classless
ip route 0.0.0.0 0.0.0.0 192.168.1.XXX
シスコのルーターのデフォルトゲートウェイの設定だ。
予想通り、NATマシンのIPアドレスを指定していた。

  以前、J社がシスコのルーターの設定した際は、パスワードを
教えてくれなかった事もあり、中身を見る事ができなかった。
  もちろん、フレームリレー回線が稼働している時は、恐くて触れなかった。
  フレームリレー回線から、インターネットVPNに完全に切り替わった
2004年12月に、シスコのルーターの設定の中身を見ようと思い、
未開封だったマニュアルを取り出して、パスワードを忘れても
ログインできる方法を調べて、ログインをした。

  show configurationコマンドで、コンフィグの中身を見ると
上の設定になっている事がわかり、私の予想は当たっていた。

  もっと別の部分で驚いた物もあった。

驚きの設定
enable password cisco

  なんと、パスワードは「 cisco 」だった (--;;

  営業所にあったシスコのルーターのパスワードも同じだった。
  しかも、どのホストからもログイン可能な状態だった。

  J社が納入した時は、インターネット接続をしていなかった上、
フレームリレー回線だったため、外部から侵入される心配がなく
単純なパスワードになっていたと考えられる。


色々、routeコマンドや、デフォルトゲートウェイの事を調べていくと 長年、謎だった事が理解できた。 次のルーティングテーブルの違い(青色の部分)が、どんな意味があるのかだった。
実験サーバーのルーティングテーブル
(プライベート側に設置)
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         192.168.1.254   0.0.0.0         UG    0      0        0 eth0
NATマシンのルーティングテーブル
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
XXX.YYY.ZZZ.A   *               255.255.255.248 U     0      0        0 eth0
192.168.0.0     *               255.255.0.0     U     0      0        0 eth1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         XXX.YYY.ZZZ.R   0.0.0.0         UG    0      0        0 eth0

  以前から、なんで実験サーバーの方は、192.168.1.0/255.255.255.0なのに、
NATは、192.168.0.0/255.255.0.0でないとダメなのか、わからなかった。

  一応、自分なりには次のように解釈していた。
  NATの場合「192.168.1.0/255.255.255.0にしてしまうと、192.168.40.100の場合は、
NICが、パケットの送受信拒否をしてしまう」だった。

  でも、この解釈だと、実験サーバーのルーティングテーブルの状態が
192.168.1.0/255.255.255.0なのに、192.168.40.100でも、相手のパソコンの電源さえ
立ち上がっていれば、問題なく通信ができるため、私の解釈に矛盾が出てくる。

  この矛盾が解けずに、ズルズルと過ごしていた!


  だが、今回の事で、以下の事を知った。
  defaultは、ルーティングテーブルに、行き先を記述されていないパケットを
どこへ飛ばすのかを意味する。
 要するに、ルーティングテーブルに記述されている送り先には該当しない
残りのパケットを、どこに飛ばすかの設定だ。なんだか変な日本語だなぁ (^^;;

実験サーバーのルーティングテーブル
(プライベート側に設置)
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         192.168.1.254   0.0.0.0         UG    0      0        0 eth0
NATマシンのルーティングテーブル
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
XXX.YYY.ZZZ.A   *               255.255.255.248 U     0      0        0 eth0
192.168.0.0     *               255.255.0.0     U     0      0        0 eth1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         XXX.YYY.ZZZ.R   0.0.0.0         UG    0      0        0 eth0

  赤色の部分は、どこにも該当しない行き先のパケットは、デフォルトゲートウェイへ
パケットを飛ばす意味だというのを知った。
  それを考えて、ルーティングテーブルの設定を見直してみた。

実験サーバーのルーティングテーブル
(プライベート側に設置)
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         192.168.1.254   0.0.0.0         UG    0      0        0 eth0
青色部分は、192.168.1.0/255.255.255.0のパケットは、eth0へ飛ばす。
赤色部分は、ルーティングテーブルにのない宛先へのパケットは、eth0から出て
鎮座するシスコのルーター(192.168.1.254)へ送るという設定だ。
その後、送られたパケットは192.168.1.254のルーターの経路情報を元に
新たな旅立ち(?)をする。

  一方、NATの方のルーティングテーブルは、次のように読み取れる。

NATマシンのルーティングテーブル
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
XXX.YYY.ZZZ.A   *               255.255.255.248 U     0      0        0 eth0
192.168.0.0     *               255.255.0.0     U     0      0        0 eth1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         XXX.YYY.ZZZ.R   0.0.0.0         UG    0      0        0 eth0
ピンクの部分は、パケットの行き先が、うちの会社が所有している
グローバルアドレスの場合は、eth0へ出るという意味だ。
青色部分は、パケットの行き先が、192.168.0.0/255.255.0.0の範囲の場合
eth1へ出さないという意味だ。
赤色部分は、行き先が、どれにも該当しないパケットの場合は、eth0から出て
グローバル側のルーターへパケットを送るという意味だ。

  ここで、わかったのは、どこにも該当しないパケットは、全て、グローバル側へ
飛ばされる事だ。
  そのため、青色部分の設定を「192.168.1.0/255.255.255.0」にしてしまうと、
例え、行き先が192.168.40.100というプライベートアドレスでも、
全てグローバル側へ飛ばされる事になる!
  そのため、パケットは迷子になり、通信ができなくなるというわけだ。

  この瞬間、ズルズルと引きずっていた謎が解けた!!


ゲートウェイとデフォルトゲートウェイの違い

今までの文中で、この2つの違いを説明していなかったので、 混乱された方もおられると思います。実は、私も混乱していました (^^;; この違いは、ゲートウェイは、パケットの送り先がルーティングテーブルに 記述されている他のネットワークへ行く場合の、パケットを飛ばす先の事を言う。 デフォルトゲートウェイは、パケットの送り先がルーティングテーブルに 記述されていない場合(要は残り物)の、飛ばす先の事を言う。 具体例を挙げると
ゲートウェイと、デフォルトゲートウェイの違い
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
XXX.YYY.ZZZ.A   *               255.255.255.248 U     0      0        0 eth0
192.168.20.0    192.168.1.100   255.255.255.0   UG    0      0        0 eth1
192.168.0.0     *               255.255.0.0     U     0      0        0 eth1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         XXX.YYY.ZZZ.R   0.0.0.0         UG    0      0        0 eth0
赤色のルーティングテーブルに記述されているネットワークへ飛ばす場合の
飛ばす先の事を「ゲートウェイ」という。

青色のパケットの行き先がルーティングテーブルに記述されていない場合の
パケットの送り先の事を言う。

  これで1つ、賢くなった (^^)V


  ややこしいのが、今回、取り上げたパケットを飛ばす先の意味の「ゲートウェイ」と
機械の意味の「ゲートウェイ」の違いがある。
  本来、第3層(ネットワーク層)までのチェックならルーターと言う。
  機械のゲートウェイは第4層(トランスポート層)までチェックが入る。
  そのため、本来、ルータを指すのに「ゲートウェイ」と呼ぶと混乱してしまう。

  本などを読むと、ゲートウェイの呼び方は、UNIX文化の中で生まれた呼び方だ。
  Windowsも、UNIXに影響されているため、Windowsの設定でも、
ゲートウェイと呼ぶのだと思う。
  習慣とはいえ、混乱を招くので、新しい呼び名を考えたら良いと思うのは
私ぐらいかなぁ (^^)


IPさえわかれば相手先に接続できる仕組み 今回の、お勉強で「デフォルトゲートウェイ」の意味がわかった。 他のネットワークへパケットを飛ばす際の、飛ばす先の事を意味する。 今回の事で、もう一つ、私にとって大きな発見があった。 というのも、こんな疑問を持っていたからだ。 なぜ、相手のIPさえ知っていれば、パケットが相手に辿り着くのか?
インターネット上の様子
何台ものルーターを経由して通信が行われている様子

  よく考えれば、不思議である。ドメイン名だけだったら、通信ができない。
そのため、DNSという物があり、IPに変換して通信を行なう。
  しかし、なぜ、IPだったら、迷子にならずに相手先へ辿り着けるのか、
不思議で仕方がなかった。

  一応、本の知識でルーターには経路情報がある事は知っていたが、
IP通信と結び付いていなかった。

  だが、今回、実践的に覚えていく過程で、IP通信の場合、パケットが
ルーターに到着する度に、次の中継地のルーターのアドレスを教えてもらいながら
最終的に、目的地に辿り着く事がわかった!!

  思わず「やった!」という気分 (^^)V

  「そんな事も知らなかったの?」と言われても、私にとっては、大きな発見!
  もし「それぐらい知っていて当たり前」という人がいたら反論します。
  だって、事務員だもーん。知らなくて当然だもーん (^^)V


  さて、インターネット上などの大規模ネットワーク上のルーターは、
動的ルーティングが行なわれていると思う。
  回線の太さ、故障した部分を上手に回避している。
  そのため、ユーザーは、毎日、平穏にネットを使っている。

  大手通信キャリアなど、巨大なネットワークを持っていて、運用している。
  「大規模ネットワーク網を構築し、管理・運用できる人は凄い人だなぁ」と
ただただ感心するしかない。

  私の場合、今の会社にいる限りは、大規模ネットワークなんぞ構築する事がないので
一生、動的ルーティングのルーターを構築する事はない。
  まぁ、大規模ネットワークを構築したいと思って、ネットワークベンダ─に
転職したくても、今の技術力だったら、簡単に門前払いされるけど (^^)


ルーターのデフォルトゲートウェイの設定

ルーターには経路情報がある事を知ったのだが、ここで疑問が生まれた。 そういえば、プロバイダーと社内LANとの間にあるルーターには 経路情報を覚えさせていない。 どうやって、ルーティングしているのだろうかと思った。
インターネットへの玄関口のルーター
(機種は、YAMAHAのRTA55i)
ヤマハ RTA55iルーターの図
設定時の時、このルーターの経路情報を設定はしていない。
なのに、正常に動くのは何故?

  早速、コマンド設定を見てみる事にした。

RTA55iのコマンド設定の一部
ip lan1 intrusion detection in on reject=on
ip lan1 intrusion detection out on reject=on
ip lan2 routing protocol none
ip lan2 rip listen none
ip route default gateway pp 1 metric 1
provider type isdn-network
provider lan1 name LAN:
provider lan2 name PPPoE/1/3/4:
赤色の部分がルーティングの部分。
デフォルトゲートウェイは、ADSL回線へ
パケットを飛ばすようになっている。

  でも、あまりコマンドを読むのが得意でないので、自信がない (^^;;
  そんな時、「そういえば、経路情報の設定があったなぁ」と思った。

  実は、RTA55iを触って遊んでいる時、簡単設定(Web上で設定の事)で
経路設定の部分があったのを覚えていた。
  当時、経路設定の事など知らなかったため、「ふーん」で終わっていた。
  そこで見てみる事にした。

RTA55iの簡単設定(経路設定)
ヤマハ(YAMAHA)ルーター RTA55iのデフォルトゲートウェイの設定部分
しっかりと、デフォルトゲートウェイがPP01(ADSL回線)となっている。
つまり、プロバイダーから与えられたIP以外は、全て外へパケットが
飛ぶように、自動的に設定されている事になる。

それ加えて、LAN側で、特定のネットワークへ飛ぶパケットの場合、
設定する人が自由に決めれるように、ゲートウェイも設定できる。
おそらく、次の場合において使うのだと思う。
ルーターにNAT機能を使った場合で、LAN内部のネットワークを
192.168.1.0/24にした。しかし、営業所の追加で、営業所のネットワークを
192.168.100.0/24にした時、営業所へパケットを飛ばすためにある設定だと思う。

  もちろん、プロバイダー側は、うちの会社のルーターのIPを知らなければ、
うちの会社にやってくるパケットを、うちの会社のルーターへ飛ばす事はできない。

  ルーターのIPはプロバイダーから指定されていたのを思い出す。
  ユーザー側で自由にルーターのIPを決める事ができない。

  インターネット接続時に、プロバイダーから指定されたルーターのIPを
ルーターに割り当てなかったために、全く通信ができずに、プロバイダーの
サポートセンターに電話をかけた事がある。
  通信ができなかった理由は、プロバイダーから、うちの会社へパケットを
飛ばす事ができなかったわけだ。

  また、発見。
  ルーターのIPがユーザー側で勝手に決められない理由が!

  これを読んでいる方から「今頃、知ったの?」と呆れられても、私にとっては、
凄く、うれしい発見なのらー!!  (^^)V

さて、最初に出てきた閉じたネットワークの世界で、TCP/IP通信を行なう際、 デフォルトゲートウェイのIPの割り振りは、どうするかの問題があった。
こんな時は、どうするの?

  今回の、お勉強で、答えが得られた。

  「特に、割り振る必要がない。もしくは、好きなIPでも割り振っても良し」

  なんだか、呆気なく、いい加減な答えのようだが、これが正しい答えだ。
  理由は、他のネットワークへパケットを飛ばす必要がないから、
デフォルトゲートウェイのIPを割り振る事が無意味だからだ。
  もちろん、検証済みです
  実際、自分の目で確かめないと気が済まない性格なのらー! (^^)


まとめ デフォルト・ゲートウェイのIP割り当ての話。 ネットワークの設定では身近な事のため、まさに、灯台下暗しでした。 VPN導入をキッカケに、ルーティングの話を調べたため、隠れていたボロが 表に出ましたが、VPN導入の話がなければ、今だに、ボロが隠れていたと思います。 昨年、徹底的にボロ出しをしたため、今年は、ボロ出しの話はないやろと思い、 システムの運用や、プロジェクト関連の話を書いていこうと思っていましたが、 まだまだ隠れているボロがありそうなので、今年も、ボロが出た時点で、 ボロ出しを行ないたいと思います。 (参考になるサイト) @ITの「デフォルトゲートウェイについて」 http://www.atmarkit.co.jp/fwin2k/win2ktips/262gateway/gateway.html @ITの「ルーティングについて」 http://www.atmarkit.co.jp/fnetwork/netcom/route/route.html

次章:「LinuxでVPNサーバー(PPTP)構築」を読む
前章:「ヤマハRTA55iルーターでVPN通信(PPTP)」を読む
目次:Linux、オープンソースで「システム奮闘記」に戻る