前言

firewalld 在centos和ubuntu上已经是标配了,整理几个常用的操作,方便日后使用。

放行端口&转发端口

开放TCP/UDP端口:

1
2
firewall-cmd --zone=public --add-port=端口/tcp --permanent
firewall-cmd --zone=public --add-port=端口/udp --permanent

启用转发端口:

1
firewall-cmd --add-masquerade --permanent

添加TCP/UDP端口转发:

1
2
firewall-cmd --add-forward-port=port=本地端口:proto=tcp:toaddr=目的IP:toport=目的端口 --permanent
firewall-cmd --add-forward-port=port=本地端口:proto=udp:toaddr=目的IP:toport=目的端口 --permanent

按服务放行

1
2
3
4
firewall-cmd --get-services #查询所有支持的服务
firewall-cmd --query-service ftp #查询是否支持ftp服务,返回yes或者no
firewall-cmd --zone=public --add-service=http --permanent #放行http服务

其实一个服务对应一个端口,每个服务对应 /usr/lib/firewalld/services 下面一个 xml 文件,如果开启了某个服务并放行了对应端口,但是没有绑定firewall中对应的服务,则不能通过外网访问。

所以当修改了服务的默认端口后,仍希望通过放行端口来实现,则需要将对应服务 xml 中端口同步修改。

禁用端口&删除转发

删除TCP/UDP端口:

1
2
firewall-cmd --zone=public --remove-port=端口/tcp --permanent
firewall-cmd --zone=public --remove-port=端口/udp --permanent

删除端口转发:

1
2
3
4
5
6
#禁用转发端口
firewall-cmd --remove-masquerade --permanent
#删除TCP端口转发
firewall-cmd --remove-forward-port=port=本地端口:proto=tcp:toaddr=目的IP:toport=目的端口 --permanent
#删除UDP端口转发
firewall-cmd --remove-forward-port=port=本地端口:proto=udp:toaddr=目的IP:toport=目的端口 --permanent

常规操作命令

  • 应用配置:firewall-cmd --reload
  • 启动防火墙:systemctl start firewalld
  • 开机自启动:systemctl enable firewalld
  • 关闭防火墙:systemctl stop firewalld
  • 关闭开机自启动:systemctl disable firewall