当前位置:首页>Linux>Linux 网络与防火墙全攻略:从 nmcli 到 SNAT/DNAT,一篇落地

Linux 网络与防火墙全攻略:从 nmcli 到 SNAT/DNAT,一篇落地

  • 2026-10-11 09:43:27
Linux 网络与防火墙全攻略:从 nmcli 到 SNAT/DNAT,一篇落地

一、修改主机名 —— 3 种方法

Linux 主机名有静态(static)、瞬态(transient)、灵活(pretty)三种形式。日常使用中我们最常配置的是静态主机名。

方法一:nmtui 图形界面

直接执行 nmtui 命令,在图形界面中选择"设置系统主机名"即可修改。适合不熟悉命令行的场景。

方法二:hostnamectl(推荐)

查看主机名:

hostnamectl status

设置新主机名:

hostnamectl set-hostname my.server.com

方法三:nmcli 命令行

查看和修改主机名:

nmcli general hostname

nmcli general hostname Server01

systemctl restart systemd-hostnamed

修改后需重启 hostnamed 服务让 hostnamectl 感知变化。

二、配置网络 —— nmtui + nmcli

任务一:nmtui 图形界面配置

执行 nmtui,依次操作:

编辑连接 → 选中网卡(如 ens160)→ 填充 IP/掩码/网关 → 确定 → 启用连接(前面出现 * 号表示激活)。

验证:用 ifconfig 查看 ens160 是否拿到 IP。

任务二:nmcli 命令配置

常用查询命令:

nmcli connection show# 显示所有连接

nmcli connection show --active# 显示活动连接

nmcli device status# 查看设备状态

nmcli device show ens160# 查看接口属性

创建新连接(静态 IP):

nmcli connection add con-name test2 ipv4.method manual ifname ens160 autoconnect no type Ethernet ipv4.addresses 192.168.10.100/24 gw4 192.168.10.1

参数说明:con-name=连接名 / ipv4.method=获取IP方式 / ifname=网卡名 / autoconnect=是否自动启动

修改连接设置:

nmcli connection modify test2 connection.autoconnect yes# 设为自动启动

nmcli connection modify test2 ipv4.dns 192.168.10.1# 修改 DNS

nmcli connection modify test2 +ipv4.dns 114.114.114.114# 添加 DNS

nmcli connection modify test2 -ipv4.dns 114.114.114.114# 删除 DNS

nmcli connection modify test2 ipv4.addresses 192.168.10.200/24 gw4 192.168.10.254

启用/禁用/删除:

nmcli connection up test2# 启用连接

nmcli connection down test2# 禁用连接

nmcli connection delete test2# 删除连接

nmcli connection reload# 重新加载配置

nmcli 命令与 /etc/sysconfig/network-scripts/ifcfg-* 文件对应关系

ipv4.method manual   ↔   BOOTPROTO=noneipv4.method auto   ↔   BOOTPROTO=dhcpipv4.addresses 192.0.2.1/24   ↔   IPADDR=192.0.2.1 / PREFIX=24gw4 192.0.2.254   ↔   GATEWAY=192.0.2.254ipv4.dns 8.8.8.8   ↔   DNS0=8.8.8.8connection.autoconnect yes   ↔   ONBOOT=yesconnection.interface-name eth0   ↔   DEVICE=eth0

三、firewalld 防火墙 —— 核心操作

firewalld 是银河麒麟操作系统的动态防火墙管理器,基于区域(zone)概念管理规则。支持 CLI(firewall-cmd)和 GUI 两种管理方式。

状态与区域管理

firewall-cmd --state# 查看防火墙状态

firewall-cmd --get-default-zone# 查看默认区域

firewall-cmd --get-active-zones# 查看生效区域

firewall-cmd --set-default-zone=public# 设置默认区域

firewall-cmd --list-all --zone=work# 查看指定区域策略

服务管理(Service)

firewall-cmd --get-services# 查看可设定的服务列表

firewall-cmd --zone=public --query-service=ssh# 查询 ssh 是否允许

firewall-cmd --zone=public --add-service=https# 临时允许 https

firewall-cmd --permanent --zone=public --add-service=https# 永久允许

firewall-cmd --permanent --zone=public --remove-service=https# 永久拒绝

firewall-cmd --reload# 重载使永久配置生效

关键记忆点:不加 --permanent = 临时生效(重启丢失);加了 = 永久生效,需 --reload 才能立即生效。

端口管理(Port)

firewall-cmd --zone=public --add-port=8088-8089/tcp# 放行 8088~8089 端口

firewall-cmd --zone=public --list-ports# 查看已放行端口

应急模式(Panic)

firewall-cmd --panic-on# 阻断一切网络连接

firewall-cmd --panic-off# 恢复正常

紧急情况下一键断网,比手动删规则安全高效。

网卡区域切换

firewall-cmd --permanent --zone=external --change-interface=ens33

将 ens33 网卡永久绑定到 external 区域,不同区域可配置不同安全策略。

四、NAT 实战 —— 企业级内外网互通

firewalld 的 nat 表支持 3 种操作:SNAT(源地址转换,固定公网 IP)、DNAT(目标地址转换,外网访问内网服务)、MASQUERADE(地址伪装,适用于动态 IP 如 ADSL 拨号)。

企业场景

内网使用 192.168.10.0/24,Linux 服务器作为网关连接互联网,外网 IP 为固定 202.112.113.112。

需求:内网用户能上网(SNAT) + 外网用户能访问内网 Web 服务器(DNAT)。

配置 SNAT(内网→外网)

第 1 步:网关服务器(Server02)安装双网卡,ens160 连内网(192.168.10.20),ens224 连外网(202.112.113.112)。

第 2 步:开启路由转发。

echo 1 > /proc/sys/net/ipv4/ip_forward

第 3 步:外网网卡加入 external 区域并开启伪装。

firewall-cmd --permanent --zone=external --change-interface=ens224

firewall-cmd --permanent --zone=external --add-masquerade

firewall-cmd --reload

第 4 步:内网网卡加入 internal 区域。

firewall-cmd --permanent --zone=internal --change-interface=ens160

firewall-cmd --reload

第 5 步:验证。内网 Server01 ping 外网 Client1 的 202.112.113.113,通即为成功。

配置 DNAT(外网→内网)

第 1 步:内网 Server01 装好 Web 服务器(httpd),确保 80 端口正常。

第 2 步:在网关 Server02 添加端口转发规则。

firewall-cmd --permanent --zone=external --add-forward-port=port=80:proto=tcp:toaddr=192.168.10.1

firewall-cmd --reload

第 3 步:外网 Client1 执行 curl 202.112.113.112,能访问到内网 Server01 的 Web 页面即为成功。

NAT 配置速查表

开启转发:echo 1 > /proc/sys/net/ipv4/ip_forward网卡加区域:firewall-cmd --permanent --zone=external --change-interface=网卡名开启伪装:firewall-cmd --permanent --zone=external --add-masqueradeDNAT 转发:firewall-cmd --permanent --zone=external --add-forward-port=port=80:proto=tcp:toaddr=内网IP重载生效:firewall-cmd --reload删除 DNAT:firewall-cmd --permanent --zone=external --remove-forward-port=port=80:proto=tcp:toaddr=内网IP网卡恢复默认:firewall-cmd --permanent --zone=public --change-interface=网卡名

总结:命令速查与最佳实践

修改主机名   hostnamectl set-hostname 新名称查看主机名  hostnamectl status创建连接  nmcli connection add con-name 名称 ...修改连接  nmcli connection modify 名称 参数启用/删除  nmcli connection up/down/delete 名称防火墙状态  firewall-cmd --state查看策略  firewall-cmd --list-all添加服务  firewall-cmd --permanent --zone=public --add-service=服务名添加端口  firewall-cmd --zone=public --add-port=端口/tcp重载生效  firewall-cmd --reload开启转发  echo 1 > /proc/sys/net/ipv4/ip_forward开启伪装  firewall-cmd --permanent --zone=external --add-masqueradeDNAT 转发  firewall-cmd --permanent --zone=external --add-forward-port=port=80:proto=tcp:toaddr=内网IP应急断网   firewall-cmd --panic-on

拓展阅读:雪人计划与 IPv6

2019 年 11 月 26 日,全球 43 亿个 IPv4 地址正式耗尽。我国推出的"雪人计划"正是面向 IPv6 时代的重大布局,旨在让中国在下一代互联网中拥有更多话语权和发展空间。学好网络基础,就是为信创事业贡献力量。

掌握了这些命令,Linux 网络配置和防火墙管理就不再是难事。如果觉得有帮助,欢迎收藏备用!

—— 全文完 ——

整理不易,如有帮助欢迎分享给更多需要的朋友

最新文章

随机文章