![在 Centos 上为 Postgres 配置防火墙规则的问题](https://linux22.com/image/686195/%E5%9C%A8%20Centos%20%E4%B8%8A%E4%B8%BA%20Postgres%20%E9%85%8D%E7%BD%AE%E9%98%B2%E7%81%AB%E5%A2%99%E8%A7%84%E5%88%99%E7%9A%84%E9%97%AE%E9%A2%98.png)
我正在尝试按照本指南允许远程连接到 postgreshttp://www.cyberciti.biz/tips/postgres-allow-remote-access-tcp-connection.html
目前我遇到了防火墙问题。
我已经设置了防火墙,因此我/tmp/v4
可以修改防火墙规则并从中恢复防火墙规则。
我尝试了 2 种设置。
指南推荐的是:
-A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 00.000.000.00 --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -s 00.000.000.00 --sport 5432 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
当我使用此设置并运行时nc ipofserver 5432
我得到Ncat: connection timed out
如果我尝试设置
-I INPUT -p tcp -s 00.000.000.00 --dport 5432 -j ACCEPT
-I INPUT -p tcp -s 00.000.000.00 --dport 5432 -j ACCEPT
我运行相同的 ncat 命令,得到Ncat: Connection refused
我在另一台服务器上使用相同的基础防火墙(不是上面列出的)来提供 redis 服务,并且它运行正常。
为了熟悉起见,此机器上的firewalld已被禁用,取而代之的是iptables。
两台机器都是 CentOS 7
00.000.000.00 替换我实际使用的计算机的 IP
答案1
centos7 开箱即用,除非您已禁用它。我假设您没有禁用它,因为否则您会提到它。
有了这个假设,您就可以简单地在 postgresql 主机上运行它:
firewall-cmd --add-service=postgresql
一旦您验证它可以正常工作,您就可以使用永久开关再次运行它,以使其在重新启动后继续运行:
firewall-cmd --add-service=postgresql --permanent
如果您安装了 bash-completion 包,重新登录后,firewall-cmd 会自动完成,非常方便使用。
编辑:OP 表示他不使用防火墙命令。因此,假设他使用旧的 iptables 服务,则修改的规范方法是编辑 /etc/sysconfig/iptables。
如果要允许该主机中的端口 5432/tcp 的传入连接,则需要添加此行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
前
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
然后重新加载 iptables 服务。这当然会允许任何主机到数据库服务器的所有连接。
如果您想限制可以连接的主机(我们将其限制为一个,111.222.111.222),那么:
-A INPUT -p tcp -s 111.222.111.222 --sport 1024:65535 --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT
这样就可以了,当然,删除另一个,然后重新加载 iptables 服务