web-dev-qa-db-ja.com

Postgresデータベースサーバーはどのネットワークプロトコルを使用しますか?

Ubuntu 12.04クラウドサーバーのデフォルトポート5432でpostgres 9.1サーバーを実行しています。

リモートクエリを実行できるようにポートを開きたいのですが、プロトコルを指定する必要があるIPテーブルでポートを開く必要があります。 このドキュメント はTCP/UDPなどについて言及していません。

IPテーブルでどのプロトコルを許可する必要がありますか?

14
bernie2436

プロトコルは単純なTCP/IPです。

"frontends"および "backends"プロトコルに関するposgresqlドキュメントから

PostgreSQLは、フロントエンドとバックエンド(クライアントとサーバー)間の通信にメッセージベースのプロトコルを使用します。プロトコルはTCP/IPおよびUnixドメインソケットでサポートされています。 ポート番号5432は、慣例としてIANAに登録されていますTCPこのプロトコルをサポートするサーバーのポート番号ですが、実際には非特権ポート番号を使用できます。

したがって、iptablesに関しては、Unixドメインソケットはネットワーク経由での使用を想定していないため、tcpプロトコルを使用します。

iptablesの例:

iptables <other_options> -p tcp -dport 5432 -j ACCEPT

Lekensteynで指摘されているように、そのネットワーク接続でSSLをアクティブにすることを検討することは特に賢明です( sing TCP-over-SSL に関するpostgresqlのドキュメントを参照)。その場合、iptablesルールは変更されません:同じポート(5432)、同じプロトコル(tcp)。

14
Ouki

デフォルトでは、PostgreSQLtはTCPポート5432でリッスンします。次のiptablesルールを使用して、着信クライアント要求を許可します(ポート5432を開く)。

-A INPUT -p tcp --dport 5432 -s xxx.xxx.xxx.xxx -j ACCEPT

ここで、xxx.xxx.xxx.xxxは接続元のサーバーのIPであるため、postgresを世界に公開していません。

1
pravin09