半个PostgreSQL DBA,热衷于数据库相关的技术。我的ppt分享https://pan.baidu.com/s/1eRQsdAa https://github.com/chenhuajun https://chenhuajun.github.io
分类: LINUX
2016-07-30 22:23:47
假设需要在CentOS 7上开放postgres,pcsd和corosync(这些是一个PostgreSQL HA集群的组成部分)的防火墙端口。下面是执行过程。
5432是postgrs的默认端口,容易被探测到,建议改成非默认端口。
机器上有两个网络设备,一个是内网的一个公网的,这两个网络设备默认都绑在public区域。
[root@node1 ~]# firewall-cmd --list-all public (default, active) interfaces: eno16777736 eno33554984 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: echo-reply rich rules:
现在我们要在内网网络上开放PostgreSQL HA集群需要用的端口。 上面的eno33554984就是内部网络,先将其移到internal区域
firewall-cmd --zone=internal --change-interface=eno33554984
再在相应的ifcfg文件中添加"ZONE=internal"使其永久生效。
echo "ZONE=internal" >> /etc/sysconfig/network-scripts/ifcfg-eno33554984
开启PostgreSQL,pcsd和corosync的端口。
firewall-cmd --permanent --zone=internal --add-port=5432/tcp firewall-cmd --permanent --zone=internal --add-port=2224/tcp firewall-cmd --permanent --zone=internal --add-port=5405/udp firewall-cmd --reload [root@node1 ~]# firewall-cmd --list-all --zone=internal internal (active) interfaces: eno33554984 sources: services: dhcpv6-client ipp-client mdns samba-client ssh ports: 5432/tcp 2224/tcp 5405/udp masquerade: no forward-ports: icmp-blocks: rich rules:
需要在公网上开放postgres端口给特定的机器访问(比如192.168.0.213,当然这个地址是假的),可以使用rich-rule。
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=192.168.0.213/32 port protocol="tcp" port="5432" accept" firewall-cmd --reload