文章主要介绍防火墙的使用,和遇到的一些问题
CentOS 防火墙 命令
- CentOS 6 系列使用 iptables
- Centos 7使用firewalld代替了原来的iptables。
查看防火墙的状态:
Centos 7 firewall 命令:
firewall-cmd --zone=public --add-port=80/tcp --permanent ##开启端口
zone #作用域
add-port=80/tcp #添加端口,格式为:端口/通讯协议
permanent #永久生效,没有此参数重启后失效
firewall-cmd --state ##查看防火墙状态,(关闭后显示notrunning,开启后显示running)
firewall-cmd --reload ##重启firewall,重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --list-ports ##查看已经开放的端口
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
iptables -L -n ##查看规则,这个命令是和iptables的相同的
man firewall-cmd ##查看帮助
systemctl 命令操作防火墙
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $?
查看已启动的服务列表:systemctl list-unit-files|grep enabled
由防火墙产生的问题
两台电脑
A:192.168.1.88
B:192.168.1.100
在同一台电脑A使用docker运行,spring cloud开发微服务的时候,运行了一个eureka服务A,映射端口8761,然后运行服务B,注册到192.168.1.88:8761,一直注册不到eureka服务,提示
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
但是B可以成功连接A的8761
当时为了方便,关闭防火墙,发现服务B可以正常注册。(难道是防火墙屏蔽了,端口的出方向)
这里写代码片
/usr/bin/docker-current: Error response from daemon: driver Failed programming external connectivity on endpoint xxxx (4509dc5c1fe2ad23848f6098edb0f6df694c001179ea4c8fa866335eb5f4f11f): iptables Failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3247 -j DNAT --to-destination 172.17.0.2:3306 ! -i docker0: iptables: No chain/target/match by that name.
按照这篇文章,打开防火墙,就OK了。
为了能正常注册服务,正常连接公网的服务,只能打开防火墙,开启指定的端口
参考:
CentOS 6和CentOS 7防火墙的关闭
CentOS 7 开放防火墙端口命令
@L_502_2@
docker无法启动问题