iptables是Linux内核的防火墙工具,通过NAT表实现端口转发。它可以将发送到某IP和端口的数据包,重定向到另一IP和端口,常用于隐藏真实服务器IP、实现内网穿透或搭建跳板机。

二、核心配置步骤
1. 开启IP转发
```bash
临时开启
echo 1 > /proc/sys/net/ipv4/ip_forward
永久开启(编辑/etc/sysctl.conf)
net.ipv4.ip_forward = 1
sysctl -p
```
2. 添加转发规则
场景一:转发到内网服务器
```bash
DNAT:将外部8080端口流量转发到内网192.168.1.100:80
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
SNAT:让返回流量正确路由(可选但推荐)
iptables -t nat -A POSTROUTING -j MASQUERADE
```
场景二:本机端口重定向
```bash
访问80端口自动转到8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
```
3. 允许转发流量
```bash
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT
```
4. 保存规则
```bash
CentOS
service iptables save
Ubuntu
iptables-save > /etc/iptables/rules.v4
```
三、常用管理命令
| 操作 | 命令 |
|------|------|
| 查看NAT规则 | `iptables -t nat -L -n -v` |
| 删除规则 | `iptables -t nat -D PREROUTING 1` |
| 清空所有规则 | `iptables -t nat -F` |
四、常见问题排查
| 问题 | 解决方法 |
|------|---------|
| 转发不生效 | 检查IP转发是否开启:`sysctl net.ipv4.ip_forward` |
| 返回包丢失 | 确认已添加MASQUERADE规则 |
| 目标服务器不通 | 检查防火墙是否允许端口 |
| SELinux阻止 | 临时测试:`setenforce 0` |
五、安全建议
- 只转发必要端口,避免默认端口(22、3389)
- 限制来源IP:`-s 10.0.0.0/24`
- 定期审计规则:`iptables -t nat -L -n -v`
一句话总结:开启IP转发 → 添加DNAT规则(指定目标IP和端口)→ 添加MASQUERADE → 保存规则,即可完成iptables端口转发配置。
另外,可以借助 80KM 端口流量转发程序,搭建流量中转节点,所有外网访问经过节点再回源,彻底隐藏真实 IP。支持 80、443 常用网页端口,兼容各大系统。
Linux UDP端口转发从零到一:游戏、DNS、VoIP场景全解析
Linux iptables端口转发从零到一:DNAT、SNAT、REDIRECT全解析
OpenWrt端口转发不生效?从防火墙规则到IP转发全面排查
从端口映射到反向代理:内网服务外网访问的完整技术方案
CCProxy端口映射不生效?局域网外部用户限制、防火墙放行三步排查
光纤端口映射完全教程:光猫虚拟服务器配置+免费穿透工具实战
内网穿透工具选型指南:ZeroTier、FRP、穿云箭、花生壳全面对比
Linux UDP端口转发从零到一:游戏、DNS、VoIP场景全解析
OpenWrt端口转发不生效?从防火墙规则到IP转发全面排查
从端口映射到反向代理:内网服务外网访问的完整技术方案
CCProxy端口映射不生效?局域网外部用户限制、防火墙放行三步排查
光纤端口映射完全教程:光猫虚拟服务器配置+免费穿透工具实战
Ngrok端口映射:解锁内网服务的公网密钥
手把手教你用firewalld配置CentOS端口转发(附代码示例)
从零部署80KM端口转发:保护你的虚拟机业务不被攻击
SSH动态端口转发(-D):一条命令搭建SOCKS代理(下)
SSH远程端口转发(-R):无公网IP也能暴露本地服务
SSH本地端口转发(-L):通过跳板机访问内网服务的完整配置
路由端口转发常见应用场景有哪些?有什么?