在 Centos 上為 Postgres 配置防火牆規則的問題
我正在嘗試按照本指南允許遠端連接到 postgres http://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
centos7 使用開箱即用的 firewall-cmd,除非你禁用它。我假設你沒有,因為否則你會提到它。
有了這個假設,你就可以簡單地在你的 postgresql 主機上執行它:
firewall-cmd --add-service=postgresql
一旦你確認它可以工作,那麼你可以使用永久開關再次執行它,使其在重新啟動後保持不變:
firewall-cmd --add-service=postgresql --permanent
如果您安裝了 bash-completion 包,在重新登錄後,firewall-cmd 會自動完成,使其非常易於使用。
編輯:OP表示他不使用firewall-cmd。所以假設他使用的是舊的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 服務