在日常的网络环境中,我们经常需要让多台内网设备通过一台具有公网IP的Linux服务器访问互联网。这时,网络地址转换(NAT)就派上了用场。本文将详细讲解如何在Linux系统中配置NAT,即使是零基础的小白也能轻松上手。
什么是NAT?
NAT(Network Address Translation,网络地址转换)是一种将私有IP地址转换为公网IP地址的技术。它允许多个内网设备共享一个公网IP访问外部网络,同时还能起到一定的安全隔离作用。
配置前的准备工作
在开始配置之前,请确保满足以下条件:
- 一台运行Linux的服务器(如CentOS、Ubuntu等),该服务器需具备两个网络接口:一个连接外网(如eth0),一个连接内网(如eth2)。
- 外网接口已正确配置并能访问互联网。
- 内网设备的网关指向Linux服务器的内网IP。
- 你拥有root或sudo权限。
启用IP转发功能
Linux默认是不转发数据包的,我们需要先开启IP转发:
# 临时启用(重启后失效)echo 1 > /proc/sys/net/ipv4/ip_forward# 永久启用(推荐)sudo nano /etc/sysctl.conf# 在文件末尾添加或取消注释以下行:net.ipv4.ip_forward = 1# 然后执行以下命令使配置生效sudo sysctl -p 使用iptables配置NAT规则
Linux中常用的NAT工具是iptables。我们将使用MASQUERADE规则实现源地址转换(SNAT)。
假设你的外网接口是 eth0,内网接口是 eth2,内网网段为 192.168.100.0/24。
# 清空现有规则(可选,谨慎操作)sudo iptables -Fsudo iptables -t nat -F# 添加NAT规则:将来自内网的数据包源地址伪装成外网接口IPsudo iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE# 允许内网到外网的转发sudo iptables -A FORWARD -i eth2 -o eth0 -j ACCEPTsudo iptables -A FORWARD -i eth0 -o eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT 保存iptables规则(防止重启丢失)
不同发行版保存方式略有不同:
Ubuntu/Debian:
sudo apt install iptables-persistent -ysudo netfilter-persistent save CentOS/RHEL:
sudo yum install iptables-services -ysudo systemctl enable iptablessudo service iptables save 验证NAT是否生效
在内网的一台电脑上执行以下操作:
- 将网关设置为Linux服务器的内网IP(如192.168.100.1)。
- 尝试ping一个公网地址,例如
ping 8.8.8.8。 - 如果能通,说明NAT配置成功!
常见问题与排查
- 无法上网? 检查IP转发是否开启、iptables规则是否正确、外网接口是否连通。
- 规则重启后失效? 请务必按照上述方法保存iptables规则。
- 内网设备DNS解析失败? 可在内网设备上手动设置DNS为8.8.8.8或114.114.114.114。
总结
通过本教程,你应该已经掌握了在Linux系统中配置NAT的基本方法。这项技能在搭建家庭网关、企业代理服务器或云环境网络隔离时非常实用。记住关键词:Linux NAT配置、网络地址转换、iptables NAT 和 内网共享上网,它们是你深入学习网络管理的重要基础。
提示:生产环境中建议结合防火墙策略,仅开放必要端口,以增强安全性。

