Networking

firewalld 配置 internal 到 public 区域的流量转发

firewalld 支持通过 Policy 对象实现跨区域流量转发。本文介绍如何配置策略,允许 internal 区域的流量转发到 public 区域,使内网主机可以通过防火墙访问外部网络。

前提条件

  • firewalld 已安装并运行(systemctl status firewalld
  • 有 root 或 sudo 权限
  • 了解 firewalld 的 Zone 和 Policy 概念

使用 resolvectl 临时指定 DNS 服务器

在日常运维中,我们经常需要临时切换 DNS 服务器来排查域名解析问题。传统做法是修改 /etc/resolv.conf,但在使用 systemd-resolved 的现代 Linux 发行版中,resolvectl 提供了更优雅的解决方案。

为什么用 resolvectl

传统的修改 /etc/resolv.conf 方式有几个痛点:

  • systemd-resolved 管理下会被覆盖:直接编辑 /etc/resolv.conf 可能无效,因为该文件是一个指向 /run/systemd/resolve/stub-resolv.conf 的符号链接
  • 需要 root 权限:编辑系统文件必须 sudo
  • 容易忘记还原:排查完问题后忘记改回来,可能影响业务

resolvectl 的优势:

特性传统方式resolvectl
修改配置文件
需要 root❌(per-link)
重启后恢复需手动还原✅ 自动恢复
影响范围全局可按网卡控制

查看当前 DNS 状态

# 查看全局 DNS 配置
resolvectl status

# 查看指定网卡
resolvectl status eth0

# 查看当前生效的 DNS 服务器
resolvectl dns

输出示例:

Global
         Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
Resolving DNS Servers: 192.168.1.1
Fallback DNS Servers: 8.8.8.8

Link 2 (eth0)
    Current Scopes: DNS
         Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
Resolving DNS Servers: 192.168.1.1
    DNS Domain: lan