CentOS6.3のファイアウォール構成のため、休止状態はPostgresに接続されません。

CentOS6.3のファイアウォール構成のため、休止状態はPostgresに接続されません。

私の動作環境はtomcat7とpostgres9.2がインストールされたCentOS 6.3です。 Tomcatには1つのWebアプリケーションがデプロイされ、localhostからpostgresへの接続を確立しようとします。以下は/etc/sysconfig/iptablesの内容です。

#Filter table
*filter
:INPUT DROP [9:2530]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [88:11968]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8443 -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
COMMIT

#NAT TABLE

*nat
:PREROUTING ACCEPT [129:7557]
:POSTROUTING DROP [1:108]
:OUTPUT ACCEPT [1:108]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443
COMMIT

Tomcatはhttpsのみを許可し、ポート8443で要求をリッスンします。現在、ポート 443 から 8443 に要求を転送するため、ユーザーは URL にポート番号を指定する必要はありません。ブラウザを介してWebページに簡単にアクセスできますが、Webアプリケーションを実行することはできません。 tomcat ログによると、netstat 出力に postgres が 127.0.0.1:5432 で要求を受信する段階にあることが示されていても、休止状態は postgres との接続を確立できません。新しいファイアウォール構成を見つけたとき、これはすべて起こり始めました。私の考えは次の行です

-A INPUT -i lo -j ACCEPT

Tomcat webappからpostgresへのローカル接続を処理する必要がありますが、そうではありません。再接続を許可するには、ファイアウォール構成で何を変更する必要があるかを知る必要があります。

ベストアンサー1

標準NIC(eth0)からループバックインターフェイス(lo)へのポート転送はデフォルトで無効になっています。この機能を有効にする必要があります。

$ sudo sysctl -w net.ipv4.conf.eth0.route_localnet=1

おすすめ記事