Skip to content

一、firewall-cmd基本命令

1. systemctl相关

shell
    # 首先查看防火墙是否开启,如未开启,需要先开启防火墙并作开机自启
    systemctl status firewalld
    # 开启防火墙
    systemctl start firewalld
    # 停止防火墙
    systemctl disable firewalld
    # 禁用防火墙
    systemctl stop firewalld
    # 设置开机自启
    systemctl enable firewalld
    # 在开机时启用一个服务
    systemctl enable firewalld.service
    # 在开机时禁用一个服务
    systemctl disable firewalld.service
    # 查看服务是否开机启动
    systemctl is-enabled firewalld.service

2. firewall-cmd通用信息查询

shell
    # 查看当前的firewall的信息和配置
    firewall-cmd --list-all
    # 查看版本
    firewall-cmd --version
    # 查看帮助
    firewall-cmd --help
    # 显示firewalld状态
    firewall-cmd --state
    
    # 模式
    # trusted:信任。可接受所有的网络连接。
    # home :家庭。用于家庭网络,仅接受dhcpv6-client ipp-client mdns samba-client ssh服务连接。
    # work :工作。工作网络,仅接受dhcpv6-client ipp-client ssh服务连接。
    # public :公共。公共区域使用,仅接受dhcpv6-client ssh服务连接,这是firewalld的默认区域。
    # external:外部。出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接。
    # dmz :非军事区。仅接受ssh服务连接。
    # block :限制。拒绝所有网络连接。
    # drop :丢弃。任何接收的网络数据包都被丢弃,没有任何回复。
    # 查看firewall的默认模式
    firewall-cmd --get-default-zone
    # 查看firewall都有哪几种模式
    firewall-cmd --get-zones
    # 将firewall的默认模式改为xxx,这是一个临时更改
    firewall-cmd --set-default-zone=xxx
    
    # 端口
    # 查看所有打开的端口
    firewall-cmd --zone=public --list-ports
    # 查看单独端口【--query-port端口/协议】
    firewall-cmd --zone= public --query-port=80/tcp
    
    # service
    # 查看所有服务
    firewall-cmd --list-services
    # 获取所有支持的服务
    firewall-cmd --get-service
    
    # 伪装IP
    # 检查是否允许伪装IP
    firewall-cmd --query-masquerade
    # 允许防火墙伪装IP
    firewall-cmd --add-masquerade
    # 禁止防火墙伪装IP
    firewall-cmd --remove-masquerade
    
    # 查看区域信息
    firewall-cmd --get-active-zones
    # 查看指定接口所属区域
    firewall-cmd --get-zone-of-interface=eth0
    
    # panic
    # 拒绝所有包
    firewall-cmd --panic-on
    # 取消拒绝状态
    firewall-cmd --panic-off
    # 查看是否拒绝
    firewall-cmd --query-panic
    
    # 查看已设置的规则
    firewall-cmd --zone=public --list-rich-rules

3. firewall-cmd基本配置

注意配置完需要reload重新加载下,在每次修改端口和服务后/etc/firewalld/zones/public.xml文件就会被修改,所以也可以在文件中之中修改,然后重新加载,使用命令实际也是在修改文件,需要重新加载才能生效。57124891.png

shell
    # 端口
    #【--zone作用域】【--add-port端口/协议】【--permanent永久生效】
    firewall-cmd --zone=public --add-port=80/tcp --permanent
    # 批量开放端口
    firewall-cmd --zone=public --add-port=100-500/tcp --permanent
    # 移除
    firewall-cmd --zone= public --remove-port=80/tcp --permanent
    # 批量移除
    firewall-cmd --zone=public --remove-port=100-500/tcp --permanent
     
    
    # 服务【--add-service服务】
    # 添加服务
    firewall-cmd --zone=public --add-service=http --permanent
    # 开启服务
    firewall-cmd --enable service=xxx
    # 关闭服务
    firewall-cmd --disable service=xxx
    # 删除服务
    firewall-cmd --remove-service=xxx
    
    # 流量转发
    # 将80端口的流量转发至8080
    firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 
    # 将80端口的流量转发至192.168.0.1
    firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1
    # 将80端口的流量转发至192.168.0.1的8080端口
    firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080
    
    # 限制访问
    # 设置某个ip访问某个服务
    firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' 
    # 删除配置
    firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept'
    # 设置某个ip访问某个端口
    firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'
    # 删除配置
    firewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'
    
    # 表示来自"172.25.254.102"的数据全部通过。如果开启,firewall不添加http,且改为8080端口后不添加到firewall,"172.25.254.102"主机也可以访问Apache。"add"改为"remove"可以取消。
    firewall-cmd --permanent --add-source=172.25.254.102 --zone=trusted
    
    # 重新加载
    # 不中断服务的重新加载
    firewall-cmd  --reload 
    #中断连接,重新加载
    firewall-cmd --complete-reload 
    # 防火墙规则永久保存
    firewall-cmd --runtime-to-permanent

Released under the MIT License.