PostgreSQLリモート接続のデバッグ

PostgreSQLリモート接続のデバッグ

オンラインソースからPostgreSQLデータベースへの接続に問題があります。

PostgreSQLは正しく設定されているようです。デフォルトのポート5432で実行されており、postgresql.confには次の行があります。

listen_addresses = '*'

pg_hba.confには次の内容があります

host    dbname    usname    all    md5

pgadminでは、次の資格情報を使用して他のコンピュータからPostgreSQLデータベースに接続できます。

Name              local
Host              192.xx.xx.xx
Port              5432
Maintenance DB    dbname
Username          usname
Password          psword

これを使用すると、完全に接続でき、正常に動作するようです。

その後、ADSLルーターはポート192.xx.xx.xx:5432を転送し、パブリックIPアドレス197.xx.xx.xx(インターネットIPに表示されている)を使用して確認しました。 http://www.canyouseeme.org/ ポートフォワーディングがうまくいくことがわかります。

SELinuxを無効にし、ファイアウォールを一時的に無効にしました。

ただし、次のように接続しようとすると

Name              online
Host              197.xx.xx.xx
Port              5432
Maintenance DB    dbname
Username          usname
Password          psword

サーバーが受信していないというエラーメッセージが表示されます。

could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "197.xx.xx.xx" and accepting TCP/IP connections on port 5432?

なぜこれですか?ポート転送を介した接続を許可するには、追加の手順を追加する必要がありますか?

答え1

allhost行のCIDRフィールドが無効ですpg_hba.conf

基本ファイル自体のコメントpg_hba.conf

#ホストデータベースユーザーCIDRアドレス方式[オプション]

そして

CIDR-ADDRESS は、レコードが一致するホストのセットを指定します。 IPアドレスとマスクの有効桁数を指定する整数(0〜32(IPv4)または128(IPv6)の間)のCIDRマスクで構成されています。あるいは、別の列にIPアドレスとネットマスクを作成してホストセットを指定することもできます。

この試み:

host    dbname    usname      197.xx.xx.xx/32  md5

これにより、リモートホスト197.xx.xx.xxでのみusnameからdbnameへの接続が許可されます。

フル197.xx.xx / 24サブネットを許可するには、以下を使用します。

host    dbname    usname      197.xx.xx.0/24  md5

関連情報