如何在Linux上配置NAT网关

来源:APP编程网作者:永濑头衔:网络博主
导读:本期聚焦于小伙伴创作的《如何在Linux上配置NAT网关》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上配置NAT网关》有用,将其分享出去将是对创作者最好的鼓励。

配置前的环境准备

在正式配置NAT网关之前,需要确认Linux服务器满足以下条件:服务器至少有两个网络接口,一个连接公网(通常称为外网网卡,比如eth0),一个连接内网(通常称为内网网卡,比如eth1);服务器已经可以正常访问公网,内网网段的IP规划已经完成,比如内网使用192.168.10.0/24网段。同时需要确认系统已经安装了iptables工具,大部分主流Linux发行版默认会预装该工具,如果没有安装可以通过系统包管理器进行安装。

如何在Linux上配置NAT网关

开启Linux内核IP转发功能

NAT网关的核心依赖Linux内核的IP转发功能,默认情况下该功能是关闭的,需要手动开启。可以通过临时开启和永久开启两种方式配置。

临时开启IP转发

执行以下命令可以临时开启IP转发,重启后会失效:

# 临时开启IPv4转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 验证是否开启成功,输出1表示已开启
cat /proc/sys/net/ipv4/ip_forward

永久开启IP转发

如果需要配置永久生效,需要修改系统内核参数配置文件:

# 编辑sysctl配置文件
vim /etc/sysctl.conf
# 在文件末尾添加以下内容,如果已有该配置则修改为1
net.ipv4.ip_forward = 1
# 使配置生效
sysctl -p

配置iptables的NAT规则

开启IP转发后,需要通过iptables配置NAT转换规则,让内网流量经过服务器时转换为公网IP发出。

确认网卡名称

先通过命令确认外网网卡和内网网卡的名称,避免配置错误:

# 查看所有网卡信息
ip addr

添加SNAT规则

假设外网网卡为eth0,内网网段为192.168.10.0/24,外网网卡的公网IP为服务器实际获取的公网地址,执行以下命令添加SNAT规则:

# 清空现有的NAT表规则(首次配置可选,生产环境谨慎操作)
iptables -t nat -F
# 添加POSTROUTING链的SNAT规则,将内网网段流量转换为eth0的IP发出
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j SNAT --to-source 外网网卡公网IP
# 如果外网IP是动态获取的,可以使用MASQUERADE代替SNAT,无需指定具体IP
# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE

配置FORWARD链规则

需要允许内网和外网之间的转发流量通过,执行以下命令:

# 允许内网到外网的转发
iptables -A FORWARD -s 192.168.10.0/24 -o eth0 -j ACCEPT
# 允许外网到内网的已建立连接和相关连接转发
iptables -A FORWARD -d 192.168.10.0/24 -m state --state ESTABLISHED,RELATED -i eth0 -j ACCEPT

验证规则是否生效

执行以下命令查看已配置的NAT规则:

# 查看NAT表的所有规则
iptables -t nat -L -n -v
# 查看FILTER表的FORWARD链规则
iptables -L FORWARD -n -v

规则持久化配置

iptables的规则默认重启后会丢失,需要配置持久化保存,不同发行版的持久化方式略有区别。

CentOS/RHEL系统

# 安装iptables-services工具
yum install -y iptables-services
# 保存当前规则
service iptables save
# 设置iptables开机自启
systemctl enable iptables

Ubuntu/Debian系统

# 安装iptables-persistent工具
apt-get install -y iptables-persistent
# 安装过程中会提示是否保存当前规则,选择是即可
# 后续更新规则后执行以下命令保存
iptables-save > /etc/iptables/rules.v4

内网客户端配置

NAT网关配置完成后,内网设备需要配置正确的网络参数才能通过网关上网:将内网设备的默认网关设置为Linux服务器的内网网卡IP,DNS设置为公共DNS或者内网可用的DNS服务器。比如内网网卡IP为192.168.10.1,内网设备的网关就配置为192.168.10.1,配置完成后可以测试访问公网地址验证是否生效。

# 内网设备测试连通性
ping -c 4 ipipp.com
# 测试网页访问
curl ipipp.com

常见问题说明

  • 如果内网设备无法上网,先检查服务器的ip_forward是否开启,再检查iptables规则是否配置正确,网卡名称是否匹配。
  • 如果服务器重启后规则丢失,检查持久化配置是否成功,对应服务是否开机自启。
  • 如果内网有部分端口无法访问,检查FORWARD链的规则是否限制了对应流量,或者是否需要添加端口相关的放行规则。
  • 配置MASQUERADE的场景更适合外网IP动态变化的网络环境,避免外网IP变更后需要手动修改SNAT规则。

LinuxNAT网关iptables网络配置ip_forward修改时间:2026-07-04 23:45:12

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。