状況
アプリサーバーから DB サーバー 10.0.3.15 に接続できない。アプリサーバーで nc -vz 10.0.3.15 5432 は timed out。DB サーバーの ss -lnt では 0.0.0.0:5432 が LISTEN で、DB サーバー上の psql -h 10.0.3.15 は成功する。
最も疑わしい候補は?
- ADB サーバーの OS のファイアウォール(ufw など)が 5432 番を許可しているか
- BPostgreSQL の
listen_addressesの設定 - C
pg_hba.confの接続元の許可 - DDB サーバーの名前の DNS レコード
正答
- B
- A
- D
- C
解説
0.0.0.0:5432 で待ち受けていて、DB サーバー自身からは接続できるので、PostgreSQL は動いており、待ち受けのアドレス(B)も問題ない。nc は IP で指定しているので DNS(D)も関係がない。pg_hba.conf(C)で拒否された場合は、TCP の接続はできたうえで PostgreSQL が「no pg_hba.conf entry」のようなエラーを返すので、nc -vz は成功するはず。TCP の接続そのものが時間切れになっているのは、途中でパケットが黙って捨てられている印で、DB サーバーの OS のファイアウォールが 5432 番を許可していないことが最も疑わしい(A)。OS で許可済みなら、次はクラウドのセキュリティグループなど途中のファイアウォールを見る。
参考: man.openbsd.org
この問題を含む ネットワーク基礎 のテストを制限時間つきで解く
ネットワーク基礎クイズへ