新闻资讯

掌握最新资讯,了解关于我们的最新动态!
您当前位置首页 > 新闻资讯 > 网络安全相关

Ubuntu 24.04端口转发与NAT地址转换配置实现内外网互通

更新时间:2026-06-03 07:30

端口转发和NAT(网络地址转换)是企业网络中最常用的功能,它们使内部网络的私有IP可以访问外部网络,同时也允许外部用户访问内部网络的服务。本文以Ubuntu 24.04为例,深入讲解Linux系统下iptables/firewalld的端口转发和NAT配置方法。

一、NAT工作原理

NAT分为源NAT(SNAT)和目的NAT(DNAT)。SNAT修改数据包的源IP地址,使内网设备使用公网IP访问外部网络(即上网功能)。DNAT修改数据包的目的IP地址,将外部对公网IP的访问转发到内网服务器(即端口映射功能)。两者都依赖内核的ip_forward功能。

二、开启内核IP转发

# 临时开启(立即生效)
echo 1 > /proc/sys/net/ipv4/ip_forward

# 永久开启
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

# 验证开启状态
sysctl net.ipv4.ip_forward
cat /proc/sys/net/ipv4/ip_forward

三、使用iptables配置SNAT

# 内网访问外网的SNAT规则
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 公网IP

# 使用MASQUERADE(动态公网IP时使用)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

# FORWARD链放行转发的流量
iptables -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# 保存规则
iptables-save > /etc/iptables/rules.v4

四、端口映射(DNAT)

# 将外网80端口映射到内网Web服务器
iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to-destination 192.168.1.100:80

# 将外网的不同端口映射到不同内网服务器
iptables -t nat -A PREROUTING -p tcp --dport 8080 -i eth0 -j DNAT --to-destination 192.168.1.100:80
iptables -t nat -A PREROUTING -p tcp --dport 8443 -i eth0 -j DNAT --to-destination 192.168.1.200:443

# 多端口映射
iptables -t nat -A PREROUTING -p tcp -m multiport --dports 80,443 -i eth0 -j DNAT --to-destination 192.168.1.100

# 确认FORWARD链放行了目标端口
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT

五、Firewalld配置端口转发

# firewalld端口转发
# 开启伪装
firewall-cmd --add-masquerade --permanent

# 端口转发(外部80到内部8080)
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent

# 转发到不同IP
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100 --permanent

# 转发到不同IP的不同端口
firewall-cmd --add-forward-port=port=443:proto=tcp:toport=443:toaddr=192.168.1.100 --permanent

# 通过富规则实现更复杂的转发
firewall-cmd --add-rich-rule='rule family="ipv4" forward-port port="3306" protocol="tcp" to-port="3306" to-addr="10.0.0.10"'

# 重新加载防火墙规则
firewall-cmd --reload

六、多端口批量转发

# 批量配置端口转发脚本
PORTS=(80 443 8080 8443)
for port in "${PORTS[@]}"; do
    iptables -t nat -A PREROUTING -p tcp --dport $port -i eth0 -j DNAT --to-destination 192.168.1.100
    iptables -A FORWARD -p tcp -d 192.168.1.100 --dport $port -j ACCEPT
done

# 使用ipset批量管理内网IP段
ipset create internal_net hash:net
ipset add internal_net 192.168.1.0/24
ipset add internal_net 10.0.0.0/8

# NAT规则使用ipset
iptables -t nat -A POSTROUTING -m set --match-set internal_net src -o eth0 -j MASQUERADE

七、端口转发安全控制

# 限制转发只针对特定源IP
iptables -t nat -A PREROUTING -p tcp --dport 3389 -s 公司公网IP -i eth0 -j DNAT --to-destination 192.168.1.10:3389

# 记录转发的连接日志
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j LOG --log-prefix "PORT_FWD_HIT: " --log-level 4

# 限制每IP转发连接数
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -m connlimit --connlimit-above 100 -j REJECT

# 转发规则超时自动失效(用cron脚本定时检查)
# */30 * * * * iptables -t nat -L PREROUTING -n | grep 192.168.1.100

八、NAT穿透与UPnP

对于小型办公网络,可以使用miniupnpd实现UPnP协议支持,允许内网设备自动请求端口映射。配置UPnP时需要注意安全限制:限制允许请求的IP范围、设置端口映射最大数量、启用客户端白名单。生产环境建议由管理员手动配置端口转发,避免UPnP带来的安全风险。

九、负载均衡NAT

# 使用iptables实现简单的负载均衡转发
iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0     -m statistic --mode nth --every 3 --packet 0     -j DNAT --to-destination 192.168.1.101:80
iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0     -j DNAT --to-destination 192.168.1.102:80

# 或者使用随机分配
iptables -t nat -A PREROUTING -p tcp --dport 80     -m statistic --mode random --probability 0.5     -j DNAT --to-destination 192.168.1.101
iptables -t nat -A PREROUTING -p tcp --dport 80     -j DNAT --to-destination 192.168.1.102

十、NAT排障与调试

端口转发排障步骤:验证内网服务器自身能否正常提供服务、确认内核ip_forward已开启、检查所有相关iptables规则语法、确认FORWARD链默认策略为ACCEPT、使用tcpdump在内外网两侧分别抓包对比、检查系统日志中的iptables LOG记录。常见的NAT问题多为FORWARD链未配置或规则顺序错误。

十一、源NAT地址池与端口复用

当大量内网用户通过同一个公网IP上网时,端口耗尽是一个常见问题。配置SNAT地址池可以让多个公网IP分担出站连接的端口分配,显著提升并发连接容量。使用iptables的SNAT目标配合多IP轮询,配置端口范围限制和超时缩短提高端口利用效率。配合连接跟踪优化,可以支持单台NAT设备处理数十万并发连接。

十二、IPv6 NAT配置与过渡技术

虽然IPv6地址充足一般不需要NAT,但在过渡时期仍需要IPv4和IPv6互通。NAT64/DNS64技术允许纯IPv6客户端访问IPv4网络,配置Tayga或Jool实现IPv6到IPv4的地址转换和端口映射。对于双栈环境,合理配置NAT64前缀和DNS64规则确保用户无感知地访问IPv4资源。

十三、NAT网关的高可用部署

NAT网关是网络出口的单点故障隐患,需要配置主备模式实现高可用。使用Keepalived实现虚拟IP漂移,两台NAT服务器共享一个VIP,主服务器故障时备用服务器自动接管所有NAT连接。iptables规则和连接跟踪表需要定期同步到备用服务器,方法包括使用conntrackd工具同步连接表状态确保故障切换时现有连接不中断。

NAT网关的性能瓶颈通常在于并发连接处理能力,使用多队列网卡和多核心绑定的方式提升NAT处理性能。不同网卡分配独立的中断队列避免CPU核心竞争。大型NAT网关需要配置专门的iptables规则优化,减少不必要的连接跟踪减轻CPU负担。

安全合格的云服务,让您的业务轻松上云!

立即选购