在企业网络中,NAT(网络地址转换)是防火墙的核心功能之一,通过将内部私有 IP 转换为外部公网 IP,实现 “多设备共享公网访问” 与 “隐藏内部网络结构” 的双重目标。不少管理员在配置 NAT 时,常因步骤混乱或命令错误导致网络不通。小编将以主流防火墙(Linux firewalld、Cisco IOS)为例,详解 NAT 配置的 5 个核心步骤与对应命令,助你快速完成 NAT 部署。
一、先明确:防火墙 NAT 的核心类型与作用
在配置前需区分两种常见 NAT 类型,确保匹配业务需求:
SNAT(源地址转换):用于内部设备访问外部网络,将内部私有 IP(如 192.168.1.0/24)转换为防火墙的公网 IP,实现多设备共享一个公网地址上网;
DNAT(目的地址转换 / 端口映射):用于外部用户访问内部服务,将公网 IP 的特定端口(如 8080)映射到内部服务器的私有 IP 与端口(如 192.168.1.100:80),隐藏内部服务器真实地址。
无论是 SNAT 还是 DNAT,配置核心都是 “定义地址池 / 端口映射规则→绑定网络接口→启用规则”,以下分步骤详解。
二、防火墙配置 NAT 的 5 个核心步骤(以 Linux firewalld 为例)
Linux 系统的 firewalld 是主流开源防火墙,支持图形界面与命令行配置,以下为命令行操作(适用于 CentOS 7/8、RHEL 7/8):
步骤 1:确认防火墙状态与网络接口
首先需确保 firewalld 已启动,并明确内外网接口名称(如内网接口ens33、外网接口ens37),避免接口配置错误导致 NAT 失效。
查看 firewalld 状态:systemctl status firewalld(显示 “active (running)” 为已启动,若未启动需执行systemctl start firewalld);
查看网络接口:ip addr(记录内网接口名,通常连接内部局域网;外网接口名,通常连接公网网关);
示例:内网接口ens33(IP:192.168.1.1/24),外网接口ens37(IP:203.0.113.1/24,公网 IP)。
步骤 2:配置 SNAT(内部访问外部)
SNAT 的核心是 “将内部私有 IP 段的流量,通过外网接口的公网 IP 转换后发送到外部”,命令需指定 “内部 IP 段、外网接口、公网 IP”。
执行 SNAT 配置命令(永久生效):
firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -s 192.168.1.0/24 -o ens37 -j SNAT --to-source 203.0.113.1
命令解析:
--permanent:配置永久生效(重启 firewalld 不丢失);
-s 192.168.1.0/24:指定内部私有 IP 段;
-o ens37:指定外网接口(流量从该接口流出);
--to-source 203.0.113.1:指定转换后的公网 IP(防火墙外网接口的 IP)。
步骤 3:配置 DNAT(外部访问内部服务)
若需外部用户访问内部服务器(如 Web 服务、数据库),需配置 DNAT(端口映射),命令需指定 “公网 IP、公网端口、内部服务器 IP、内部端口”。
示例:将公网 IP(203.0.113.1)的 8080 端口,映射到内部 Web 服务器(192.168.1.100)的 80 端口,执行命令(永久生效):
firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -d 203.0.113.1 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
命令解析:
-d 203.0.113.1:指定防火墙的公网 IP(外部用户访问的 IP);
-p tcp --dport 8080:指定外部访问的协议(TCP)与端口(8080);
--to-destination 192.168.1.100:80:指定内部服务器的私有 IP 与端口。
步骤 4:开放对应端口(避免防火墙阻断流量)
配置 DNAT 后,需在防火墙的 “过滤规则” 中开放公网端口(如 8080),否则外部流量会被防火墙拦截,无法到达内部服务器。
开放公网端口 8080(永久生效):
firewall-cmd --permanent --add-port=8080/tcp
若内部服务器需访问外部(如更新软件),无需额外开放内网端口(SNAT 已自动允许内部流量流出)。
步骤 5:重载防火墙规则,验证配置
配置完成后需重载 firewalld,使规则生效,再通过测试验证 NAT 是否正常工作。
重载 firewalld:firewall-cmd --reload;
验证 SNAT:在内部设备(如 192.168.1.10)访问www.baidu.com,执行curl ifconfig.me(查看公网 IP,若显示 203.0.113.1,说明 SNAT 生效);
验证 DNAT:在外部设备(如家用电脑)访问http://203.0.113.1:8080,若能打开内部 Web 服务器页面,说明 DNAT 生效;
查看 NAT 规则:firewall-cmd --direct --get-rules ipv4 nat(确认配置的 SNAT/DNAT 规则已存在)。
三、Cisco IOS 防火墙 NAT 配置(补充说明)
若使用 Cisco 路由器 / 防火墙(如 Cisco 2911),配置步骤逻辑一致,但命令格式不同,核心 5 步如下:
进入全局配置模式:enable → configure terminal;
定义内部接口与外部接口:
interface FastEthernet0/0(内网接口)→ ip nat inside;
interface FastEthernet0/1(外网接口,公网 IP:203.0.113.1)→ ip nat outside;
配置 SNAT(内部访问外部):
access-list 1 permit 192.168.1.0 0.0.0.255(允许内部 IP 段);
ip nat inside source list 1 interface FastEthernet0/1 overload(overload 表示多对一共享 IP);
配置 DNAT(外部访问内部):
ip nat inside source static tcp 192.168.1.100 80 203.0.113.1 8080 extendable(TCP 8080 映射到 192.168.1.100:80);
验证配置:show ip nat translations(查看 NAT 转换记录)、ping 203.0.113.1(外部测试连通性)。
四、配置 NAT 的常见问题与避坑技巧
接口方向配置错误:SNAT 需绑定 “外网接口”(-o参数),DNAT 需绑定 “公网 IP 对应的接口”,若接口方向搞反(如 SNAT 用内网接口),会导致 NAT 失效;
未重载规则:Linux firewalld 配置后必须执行firewall-cmd --reload,Cisco 需退出配置模式(exit),否则规则不生效;
端口冲突:DNAT 映射的公网端口(如 8080)需未被防火墙其他服务占用,可通过netstat -tuln | grep 8080(Linux)检查端口占用;
内部服务器网关错误:内部服务器的网关必须指向防火墙的内网 IP(如 192.168.1.1),否则流量无法到达防火墙,无法完成 NAT 转换。
防火墙配置 NAT 的核心是 “明确类型(SNAT/DNAT)→ 绑定接口→ 定义规则→ 开放端口→ 验证生效”,无论 Linux firewalld 还是 Cisco IOS,步骤逻辑一致,仅命令格式不同。配置时需注意接口方向、端口冲突、网关设置三个关键点,通过 “测试验证” 确保 NAT 正常工作。掌握 NAT 配置,可实现企业多设备共享公网访问,同时隐藏内部网络结构,提升网络安全性与可用性。