はじめに
PC から、ルーターの向こうにある Web サーバーのページが見えない。こういうとき、出力されたメッセージの 形 を見るだけで、止まっている場所をかなり絞り込めます。
この記事では、次の構成を例に、よく出るメッセージと「どこを確かめればいいか」をまとめます。
筆者は無料学習サイト「プロ道(prodou.net)」の運営者です。この記事の表は、インフララボ1段目と同じ構成を本物の Debian 13 で組み、わざと1か所ずつ設定を抜いて確かめた結果をもとにしています。
構成
[PC] ── [SW1] ── [R1] ── [SW2] ── [Web]
| 機械 | 口 | IP / 長さ | ゲートウェイ |
|---|---|---|---|
| PC (Linux) | eth0 | 192.0.2.10/25 | 192.0.2.1 |
| R1 (Cisco) | gi0/0(PC側) | 192.0.2.1/25 | — |
| R1 (Cisco) | gi0/1(Web側) | 192.0.2.129/25 | — |
| Web (Linux・nginx) | eth0 | 192.0.2.130/25 | 192.0.2.129 |
/25 で 192.0.2.0〜127 と 192.0.2.128〜255 の2つの網に分かれます。PC と Web は別の網なので、間にルーターが必要で、両方にゲートウェイを設定します。
出力の形で止まった場所を読む
PC から ping -c 3 192.0.2.130 と curl http://192.0.2.130/ を打ったときの出力です。
| PC に出た出力 | 止まっている場所 | 確かめること |
|---|---|---|
ping: connect: Network is unreachable |
PC の中(経路が1本もない) | PC で ip addr(IPがあるか)と ip route(defaultがあるか) |
From 192.0.2.10 ... Destination Host Unreachable(From が自分) |
PC のすぐ外(ゲートウェイが返事をしない) | R1 の口が開いているか、IP が合っているか(show ip interface brief) |
From 192.0.2.1 ... Destination Net Unreachable(From がルーター) |
R1(Web 側の網への道を知らない) | R1 の Web 側の口(gi0/1)が開いているか |
100% packet loss(何の出力もない) |
行きは届いて、返事が戻らないことが多い | Web のゲートウェイ(ip route)、Web に IP が付いているか |
curl: (7) Failed to connect ... port 80(ping は通る) |
Web まで届いたが、80番で待っている人がいない | Web で systemctl status nginx
|
ポイントは From のアドレス です。自分から返ってきたのか、ルーターから返ってきたのかで、止まった場所が1つずれます。
返事が戻らないとき、本物の curl は約2分待ってから curl: (28) Failed to connect … after 129710 ms を出します。curl --connect-timeout 5 を付けると5秒であきらめるので、切り分けのときは付けておくと速いです。
本物で確かめて分かったつまずき
長さを付け忘れると /32 になる
ip addr add 192.0.2.10 dev eth0 # エラーにならない(/32 が付く)
ip route add default via 192.0.2.1
# Error: Nexthop has invalid gateway.
/32 だと自分の網に 192.0.2.1 が含まれないので、ゲートウェイの登録を断られます。エラーが出るのは 2行目 なので、原因に気づきにくいところです。
口を落とすとデフォルトゲートウェイが消える
ip link set eth0 down → up で、その口を通る経路は全部消え、上げ直しても戻りません。ip route add をやり直します。
スイッチの口が閉じていると NO-CARRIER
ip addr の状態が LOWERLAYERDOWN、ip route の行に linkdown が付きます。ケーブルが抜けたときと同じ見え方です。
nginx は restart より reload
設定を書き間違えると、systemctl restart では止まったままになります。reload なら動いたまま断られるだけです。変える前に nginx -t で確かめる癖をつけましょう。
まとめ
- 出力の 形 と From のアドレス で、止まった場所はかなり絞れる
- 何も返ってこないときは「行き」より「戻り」を疑う
-
ip addr addの長さの付け忘れは、次のコマンドでエラーになる
ブラウザで同じ構成を練習する
この構成は、プロ道のインフララボでブラウザだけで組めます。R1・Web・PC を1台ずつ設定して、最後に PC のブラウザで自分のページが開けたら完成です。登録・インストールは不要です。
※ラボは JavaScript で動く学習用のもので、実際の通信はしません。