web-dev-qa-db-ja.com

`pg_hba.conf`でホスト名を使用していますか?

PostgreSQLのドキュメントによると:

ドット(。)で始まるホスト名の指定は、実際のホスト名のサフィックスと一致します。したがって、.example.comはfoo.example.comに一致します(example.comだけではありません)。

だから私はこの行をpg_hba.confと再起動したPostgreSQL:

hostssl market_data market_data_access .horsholm.dk md5

次に、データベースへの接続を試みます。

psql "postgresql://market_data_access@<server-IP>:5433/market_data?sslmode=require"

パスワードプロンプトの代わりに、これを取得します。

psql: FATAL:  no pg_hba.conf entry for Host "195.249.206.131", user "market_data_access", database "market_data", SSL on

確認のために、エラーメッセージにリストされているIPアドレスの逆DNSルックアップを行います。

$ Host 195.249.206.131
131.206.249.195.in-addr.arpa is an alias for 131.129-190.206.249.195.in-addr.arpa.
131.129-190.206.249.195.in-addr.arpa domain name pointer kommune.horsholm.dk.
$

何が悪いのですか?

195.249.206.131がワイルドカードと一致するkommune.horsholm.dkに解決されるだけでは不十分です。

それを確認した後、Postgresはkommune.horsholm.dkを解決しようとし、195.249.206.131に解決されないことを検出します(この特定のケースではまったく解決されないため)。

$ Host kommune.horsholm.dk
Host kommune.horsholm.dk not found: 3(NXDOMAIN)

ドキュメントの引用

ホスト名が指定されている場合(IPアドレス範囲または特殊なキーワードでないものはすべてホスト名として扱われます)、その名前はクライアントのIPアドレスの逆名前解決の結果と比較されます(たとえば、逆DNS DNSが使用されている場合、ルックアップ)。ホスト名の比較では、大文字と小文字は区別されません。一致する場合、ホスト名に対して前方名前解決(DNSの前方参照など)が実行され、解決されるアドレスのいずれかがクライアントのIPアドレスと等しいかどうかが確認されます。 両方向が一致する場合、エントリは一致すると見なされます

7
Daniel Vérité