Ubuntu 12.04クラウドサーバーのデフォルトポート5432でpostgres 9.1サーバーを実行しています。
リモートクエリを実行できるようにポートを開きたいのですが、プロトコルを指定する必要があるIPテーブルでポートを開く必要があります。 このドキュメント はTCP/UDPなどについて言及していません。
IPテーブルでどのプロトコルを許可する必要がありますか?
プロトコルは単純な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)。
デフォルトでは、PostgreSQLtはTCPポート5432でリッスンします。次のiptablesルールを使用して、着信クライアント要求を許可します(ポート5432を開く)。
-A INPUT -p tcp --dport 5432 -s xxx.xxx.xxx.xxx -j ACCEPT
ここで、xxx.xxx.xxx.xxxは接続元のサーバーのIPであるため、postgresを世界に公開していません。