状況
サーバー(10.0.1.20)の待ち受けを ss -lnt で確かめた。同じネットワークの別のサーバーから、このサーバーの各サービスに接続したい。ファイアウォールは無いものとする。
別のサーバーから接続できないのはどれ?
State Local Address:Port Peer Address:PortLISTEN 0.0.0.0:80 0.0.0.0:*LISTEN 127.0.0.1:5432 0.0.0.0:*LISTEN 0.0.0.0:22 0.0.0.0:*正答
- 80 番(Web サーバー)
- 5432 番(PostgreSQL)
- 22 番(SSH サーバー)
- どれも接続できる(同じネットワーク内だから)
解説
Local Address は、そのサービスがどのアドレスで待ち受けているかを示す。0.0.0.0 はサーバーが持つすべての IPv4 アドレスで受ける意味で、80 番と 22 番には 10.0.1.20 宛ての接続が届く。5432 番は 127.0.0.1(ループバック)だけで待ち受けているので、サーバーの外から 10.0.1.20:5432 に接続しても受け手がいない。PostgreSQL は既定で localhost だけを待ち受けるため、他のサーバーから使うなら listen_addresses を変える必要がある(認証の pg_hba.conf も別に要る)。同じネットワーク内でも、待ち受けのアドレスが合わなければ届かない(4 番目は誤り)。ファイアウォールを開けても解決しないのが、この問題の落とし穴。
この問題を含む ネットワーク基礎 のテストを制限時間つきで解く
ネットワーク基礎クイズへ