本文详细介绍如何使用iptables实现Linux系统的端口转发功能,涵盖DNAT/SNAT原理、常用命令示例、防火墙持久化配置及典型应用场景。通过分步演示和代码实例,帮助管理员快速掌握安全高效的网络流量转发技术。
一、端口转发核心概念
端口转发(Port Forwarding)是通过网络地址转换(NAT)技术,将到达某端口的流量重定向到其他主机或端口的过程。iptables作为Linux内核的防火墙工具,通过nat
表的规则实现这一功能。
二、iptables转发原理
实现端口转发主要依赖两个关键机制:
- DNAT(目标地址转换):修改数据包的目标地址/端口
- SNAT(源地址转换):确保返回流量能正确路由
三、基础端口转发配置
1. 本地端口转发
将本机8080端口转发到80端口:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
2. 跨主机端口转发
将本机3306端口转发到192.168.1.100的3306端口:
iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to-destination 192.168.1.100:3306
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 3306 -j MASQUERADE
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 3306 -j ACCEPT
四、高级配置技巧
1. 多端口范围转发
iptables -t nat -A PREROUTING -p tcp --dport 2000:3000 -j DNAT --to-destination 10.0.0.2
2. 按源IP限制转发
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.3:80
五、规则持久化保存
CentOS/RHEL系统:
service iptables save
或
iptables-save > /etc/sysconfig/iptables
Debian/Ubuntu系统:
apt install iptables-persistent
iptables-save > /etc/iptables/rules.v4
六、典型应用场景
- 将公网端口映射到内网服务器
- 实现负载均衡前的流量分发
- SSL终结后的明文流量转发
- 容器网络与主机网络的端口映射
七、故障排查命令
查看NAT表规则
iptables -t nat -L -n -v
检查内核转发是否启用
sysctl net.ipv4.ip_forward
实时监控转发流量
watch -n 1 cat /proc/net/ip_conntrack
注意事项: 生产环境建议配合conntrack
模块使用,确保连接跟踪正常。复杂网络环境应考虑结合ip route
命令进行路由优化。
评论