用户头像 点击登录
儿童
普通
限制
用户头像 点击登录

超详细的 Centos 8 防火墙(firewalld)解释 与配置 - (2) 安装与配置

xdatum 2021-09-11

安装与启动

  1. 安装
    Centos 8 默认已安装并启动了 firewalld。如果由于某些原因,系统上没有安装,则可以通过以下命
    令进行安装。
    sudo dnf install firewalld
  2. 设置开机自动启动
    sudo systemctl enable firewalld --now
  3.  查看启动状态
    sudo firewall-cmd --state
    如果防火墙已经启动,会返回 running 。 否则返回 not running 。
  4. 启动防火墙
    sudo systemctl start firewalld
  5. 5. 重启防火墙
    sudo systemctl restart firewalld
    查看和设置域
    1. 查看默认域
    系统初始的默认域是 public ,并且将所有网络端口分配给了该域。
    sudo firewall-cmd --get-default-zone
    2. 查看所有可用域
    sudo firewall-cmd --get-zones
    3. 查看活动域机器分配的网络接口
    sudo firewall-cmd --get-active-zones
    返回
    public interfaces: eth0 eth1
    表示 public 域被适用于网络接口 eth0 和 eth1 。
    4. 查看域的详细配置
    sudo firewall-cmd --zone=public --list-all
    返回
    public (active)
    target: default
    icmp-block-inversion: no
    interfaces: eth0 eth1
    sources:
    services: ssh dhcpv6-client
    ports:
    protocols:
    masquerade: no
    forward-ports:
    source-ports:
    icmp-blocks:
    rich rules:
    从上面的返回可以看出:
    1. public 域处于活动状态。
    2. 其 目标(target) 使用的是默认目标,默认目标为 REJECT
    3. public 域 作用于 eth0 , eth1 两个网络接口
    4. 允许ssh, dhcpv6-client 这两个服务传入连接。
    5. 查看所有域的详细配置
    sudo firewall-cmd --list-all-zones

    配置服务
    1. 列出现有服务
    sudo firewall-cmd --zone=public --list-services
    2. 增加服务
    sudo firewall-cmd --zone=public --add-service=http
    3. 删除服务
    sudo firewall-cmd --zone=public --remove-service=http

    配置端口
    1. 列出端口
    sudo firewall-cmd --zone=public --list-ports
    2. 增加端口
    sudo firewall-cmd --zone=public --add-port=80/tcp
    3. 删除端口
    sudo firewall-cmd --zone=public --remove-service=80/tcp

    配置源 IP
    1. 列出源
    sudo firewall-cmd --zone=public --list-sources
    2. 增加源
    sudo firewall-cmd --zone=public --add-source=192.168.1.2
    3. 删除源
    sudo firewall-cmd --zone=public --remove-source=192.168.1.2

    配置端口转发
    首先需要使用 --add-masquerade 为所需设置的区域启用伪装。
    sudo firewall-cmd --zone=external --add-masquerade
    1. 本机端口转发
    sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
    2. 转发到另一个IP地址
    sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2
    3. 转发到零i个服务器的特定端口

    配置持久化
    1. 单一配置持久化
    通过在配置后增加 --permanent 参数即可完成单一配置的持久化。
    2. 全部运行时持久化
    sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10
    sudo firewall-cmd --runtime-to-permanent

超详细的 Centos 8 防火墙(firewalld)解释 与配置 - (1) 防火墙(firewalld)基本概念