デフォルトゲートウェイ
今日はちょっと不思議な出来事があった。
同じネットワークに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を通ってネットワークから出ていってる。 ゲートウェイが誤った設定になっていると、そのネットワークの最初のアドレスをゲートウェイとみなすようになっているんだろうか。不思議だ…。