at posts/single.html

デフォルトゲートウェイ

今日はちょっと不思議な出来事があった。

同じネットワークにWindowsとLinuxのマシンがあるんだけど、外部からWindowsは見えるけどLinuxは見えない (ping も ssh も応答が無い) 状態だった(同じネットワークのWindowsマシンからLinuxマシンは見える)。

  192.168.0.0/24
+------------------------+
| 192.168.0.40 (Windows1)|
| 192.168.0.41 (Linux)   |
+--------+---------------+
         |192.168.0.1 (GW)
         |
         |192.168.3.1 (GW)
+--------+---------------+
| 192.168.3.10 (Windows2)|
+------------------------+
  192.168.3.0/24
  • Windows1 → Linux は見える
  • Windows2 → Linux は見えない

最初は、Linuxのファイアウォールやhosts.denyの設定かと思ったけど、調べてもそれらしき設定はされていない。

悩むこと10分。Linuxの経路設定が間違っているんじゃないかと思いつく。

# route
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
127.0.0.0       *               255.0.0.0       U     0      0        0 lo

やっぱりデフォルトゲートウェイ(ネットワークの出口)の設定がされてない。 /etc/sysconfig/networking/profiles/default/ifcfg-eth0 を見ると、

GATEWAY=192.168.1.1
               ~~~

と、見事に設定が間違っていた。 これを 192.168.0.1 に書き換えたら、ちゃんとLinuxマシンが見えるようになった。

しかし不思議なのはここから。 実は、Windowsマシンのデフォルトゲートウェイも 192.168.1.1 という間違っていた設定になっていた(Windowsマシンの設定に合わせてLinuxマシンのゲートウェイを設定していたみたい)。

> ipconfig

Windows IP Configuration
Ethernet adapter ローカル エリア接続:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 192.168.0.40
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.1.1
                                                   ~~~

これだと、Windowsマシンも外部から見えないはず。 そこで、Windowsマシンの経路を調べてみたら、

> tracert 192.168.1.1

Tracing route to 192.168.1.1 over a maximum of 30 hops
  1    <1 ms    <1 ms    <1 ms  192.168.0.1
  2    <1 ms    <1 ms    <1 ms  192.168.1.1

Trace complete.

なぜか(設定していない)192.168.0.1を通ってネットワークから出ていってる。 ゲートウェイが誤った設定になっていると、そのネットワークの最初のアドレスをゲートウェイとみなすようになっているんだろうか。不思議だ…。

関連する日記