Linux iptables 端口转发简易教程

时间:2026-05-11 13:59

一、准备工作(先做这步)

开启 Linux 内核的 IP 转发功能,否则转发不生效:

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

# 永久开启(重启后依然有效)
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

验证是否成功:

bash
sysctl net.ipv4.ip_forward   # 输出应为 1

二、iptables 转发命令

场景1:本机端口转发(8080 → 80)

把访问本机 8080 端口的流量,转给本机的 80 端口:-6

bash
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80

场景2:转发到另一台服务器(公网8080 → 内网192.168.1.100:80)

这是最常见的端口映射场景,把外部请求转发给内网服务器:-1-3-4

第一步:DNAT 修改目标地址

bash
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

第二步:SNAT 确保回程流量能回来(关键!)

bash
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 80 -j MASQUERADE

第三步:FORWARD 放行转发流量

bash
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT

场景3:UDP 端口转发

把 -p tcp 换成 -p udp 即可:-7

bash
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination 192.168.1.100:53
iptables -t nat -A POSTROUTING -p udp -d 192.168.1.100 --dport 53 -j MASQUERADE

三、常用管理命令

 
 
操作 命令
查看所有 NAT 规则 iptables -t nat -L -n -v --line-numbers
按行号删除规则 iptables -t nat -D PREROUTING 1
保存规则(Ubuntu/Debian) iptables-save > /etc/iptables/rules.v4
保存规则(CentOS) service iptables save

四、避坑指南

 
 
问题 原因 解决办法
转发没反应 IP 转发未开启 执行 echo 1 > /proc/sys/net/ipv4/ip_forward
只收到请求,没有响应 忘了加 SNAT/MASQUERADE 补充 POSTROUTING 规则
重启后规则丢失 规则没保存 使用 iptables-save 持久化
端口被防火墙拦截 INPUT/FORWARD 链没放行 添加 ACCEPT 规则

五、现代化工具:80km无痕网关

iptables 虽然强大,但配置繁琐且需要记忆复杂的语法。80km无痕网关(曾用名:80KM端口流量转发程序) 是一款更现代化的端口转发工具,配置直观、支持热加载。

优势对比

 
 
特性 iptables 80km无痕网关
配置方式 命令行+持久化 JSON 配置文件
规则生效 需手动保存 热加载,无需重启
学习成本 较高 极低

快速上手

创建配置文件 forwarder.json

json
{
    "listen": "0.0.0.0:8080",
    "routers": [
        {"from": "0.0.0.0/0", "to": "192.168.1.100:80"}
    ]
}

启动服务:

bash
80km-forwarder -config forwarder.json

就这么简单,无需记忆 iptables 语法,即刻生效。


一句话总结sysctl -w net.ipv4.ip_forward=1 开转发 → iptables -t nat -A PREROUTING -j DNAT 做映射 → 别忘了加 MASQUERADE。或者用 80km无痕网关,配置文件搞定一切。

Linux iptables 端口转发简易教程
Linux UDP端口转发从零到一:游戏、DNS、VoIP场景全解析
Java做端口转发性能怎么样?原生Socket vs Netty对比分析
手把手配置Linux内网转发:端口转发、网段互通、共享上网三种场景
TCP端口转发不生效?IP转发、防火墙、SELinux排查手册
手把手配置Linux DNS转发:全局转发+条件转发完整步骤
服务器设置转发:实现高效数据传输的实用指南
解析流媒体转发服务器:支撑影音流畅传输的核心力量
Windows 截图怎么转发?超全实用转发方法汇总
查找网站隐藏ip,如何快速查找网站隐藏ip