状況
アプリを再デプロイした直後から、同じネットワークの別サーバーで curl -v http://10.0.1.20:8080/ を実行すると、すぐに「Connection refused」が返る。ping 10.0.1.20 には応答がある。
原因を調べる順番として、最も適切なものは?
- Aサーバーで
ss -lntを見て、8080 番の待ち受けとそのアドレス - B
digで名前解決ができているか - C途中のファイアウォールの規則
- Dアプリのログで起動時のエラーを探す
正答
- C → A → D → B
- B → C → A → D
- D → C → B → A
- A → D → C → B
解説
宛先を IP で直接書いているので、名前解決(B)は関係がなく最後でよい。「すぐに refused」は、パケットがサーバーまで届き、そのポートで誰も待ち受けていないと OS が断ったときの典型。直前に変えたのはアプリなので、まず ss -lnt で 8080 番を待ち受けているか、127.0.0.1 だけになっていないかを見る(A。安く速く、結果がはっきりする)。待ち受けていなければ、なぜ起動しなかったかをアプリのログで探す(D)。待ち受けが正常なのに refused なら、途中のファイアウォールが拒否応答を返している可能性を見る(C)。ファイアウォールから見るのは、変えていない層からの遠回り。
参考: man7.org
この問題を含む ネットワーク基礎 のテストを制限時間つきで解く
ネットワーク基礎クイズへ