项目上需要把9888端口禁止外部ip访问,应用又是通过docker部署的,所以需要配置docker访问规则链来实现
1.先配置物理机的端口访问规则
#只允许ip为10.143.16.3的地址访问本机的9888端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.143.16.3/32" port protocol="tcp" port="9888" accept"
2.重载
firewall-cmd --reload
3.DOCKER-USER是docker设定的用户自定义访问规则链
#配置禁止访问9888端口
iptables -I DOCKER-USER -p tcp --dport 9888 -j DROP
#配置可访问9888端口的白名单
iptables -I DOCKER-USER -s 10.143.16.0/24 -p tcp --dport 9888 -j ACCEPT
#查看DOCKER-USER链规则配置情况
iptables --line -nvL DOCKER-USER
规则顺序关键 :iptables/firewalld 的规则是 "从上到下匹配",白名单需遵循 "允许规则在前,拒绝规则在后",firewalld 规则需加--permanent才会永久生效。
避坑点:不要在DOCKER链加自定义规则(易丢失),优先用DOCKER-USER链。