CentOS6.3 中防火墙配置阻止 hibernate 连接到 postgres

CentOS6.3 中防火墙配置阻止 hibernate 连接到 postgres

我的运行环境是CentOS 6.3,安装了tomcat7和postgres9.2。 tomcat 中只部署了一个 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 应用程序无法运行。从 tomcat 日志来看,hibernate 无法与 postgres 建立连接,即使 netstat 输出显示 postgres 处于侦听 127.0.0.1:5432 请求的阶段。当我想出新的防火墙配置时,这一切就开始发生了。我的想法是下面一行

-A INPUT -i lo -j ACCEPT

应该处理从 tomcat webapp 到 postgres 的本地连接,但看起来并没有。我需要知道防火墙配置中有哪些内容需要更改以允许再次连接。

答案1

默认情况下禁用从标准 NIC (eth0) 到环回接口 (lo) 的端口转发。您必须启用此功能:

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

相关内容