防火墙常用命令
微冷 2021/9/9 firewalld
centos系统安装后自带防火墙firewall已经满足常用的很多需求了,整理如下:
# 一、状态、启动、关闭、重启
默认防火墙是不开启的,所以当你接手一个新的服务器要维护时要查看是否启动了防火墙(如果安装了iptables等其他防火墙另说)
# 1.1、服务状态检查
[root@VM-0-5-centos ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: active (running) since 三 2021-02-24 17:59:58 CST; 4 weeks 0 days ago
Docs: man:firewalld(1)
Main PID: 22784 (firewalld)
CGroup: /system.slice/firewalld.service
└─22784 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
出现Active: active (running)。。。这样的高亮字眼代表开启了
出现 Active: inactive (dead),,,这样灰色的字眼代表没有开启
# 1.2、启动防火墙
systemctl start firewalld
或着
service firewalld start
1
2
3
2
3
# 1.3、关闭防火墙
systemctl stop firewalld
或者
service firewalld stop
1
2
3
2
3
# 1.4、重启防火墙
systemctl restart firewalld
或着
service firewalld restart
1
2
3
2
3
# 1.5、设置开机自启
systemctl enable firewalld
1
# 1.6、设置开机禁用
systemctl disable firewalld.service
1
# 二、firewall常用命令
提示
- firewall-cmd是Linux提供的操作firewall的一个工具(同ls命令一样,后面跟各种参数)
- firewall-cmd后面的参数都是--开始的,这个地方很多人容易写成-或者不写!
# 2.1、查看防火墙状态
上面的是查看防火墙服务状态
firewall-cmd --state
1
# 2.2、查看防火墙规则列表
firewall-cmd --zone=public --list-ports
或者不加 --zone=public 也可以
firewall-cmd --list-all
1
2
3
2
3
# 2.3、查看某个端口是否开放
firewall-cmd --query-port=8080/tcp
1
# 2.4、重新加载配置
修改配置后要重启防火墙,虽然修改配置后可以看到success这样的提示,但是指配置修改成功,并没有启用直到执行reload
firewall-cmd --reload
1
# 三、规则增加、删除
# 3.1、添加一个端口
firewall-cmd --zone=public --add-port=443/tcp --permanent
--zone #作用域
--add-port=443/tcp #添加端口,格式为:端口/通讯协议
--permanent #代表永久生效,没有此参数重启后失效
1
2
3
4
2
3
4
# 3.2、添加多个端口
firewall-cmd --add-port={22,23,80,443,22122,23000,6379}/tcp --permanent
或者
firewall-cmd --add-port={8081/tcp,8082/tcp}
或者
firewall-cmd --permanent -zone=public --add-port=7777-8000/tcp
1
2
3
4
5
2
3
4
5
# 3.3、删除一个端口
firewall-cmd --permanent --remove-port=8085/tcp
1
# 3.4、删除多个端口
firewall-cmd --remove-port={8081/tcp,8082/tcp}
1
# 3.5、添加一个富规则
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.144.214" port protocol="tcp" port="3306" accept"
1
# 3.6、删除一个富规则
firewall-cmd --permanent --remove-rich-rule "rule family="ipv4" source address="192.168.144.214" port protocol="tcp" port="3306" accept"
1
说明
以上规则配置在文件/etc/firewalld/zones/public.xml中保存,有兴趣的可以自己查看
# 四、端口转发
位于服务器端的端口转发一般使用nginx等反向代理工具实现,简单的也可用直接使用firewall实现
firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
# 例子:firewalld实现端口转发(端口映射)只能转发tcp相关的服务
firewall-cmd --permanent --zone=public --add-forward-port=port=5555:proto=tcp:toport=22:toaddr=172.16.1.31
1
2
3
2
3
# 五、参考地址
https://www.cnblogs.com/yinwu/p/11741479.html (opens new window) https://www.cnblogs.com/vicowong/p/11210144.html (opens new window)
# 六、常见问题
阿里云等网络服务器设置后外网仍不能访问?
登录阿里云控制开,出入规则设置一下。。。
留言: