IP 转发 = 允许数据包从一个网卡进入,从另一个网卡出去(让 Linux 当路由器用)
# 开启转发的关键命令 sysctl -w net.ipv4.ip_forward=1 echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
| 类型 | 作用 | 场景 | iptables 语法 |
|---|---|---|---|
| SNAT | 修改源IP | 内网上网 |
-t nat -A POSTROUTING -j SNAT --to-source IP |
| DNAT | 修改目标IP | 端口映射 |
-t nat -A PREROUTING -j DNAT --to-destination IP |
# 内网上网(共享公网IP) iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE # 端口转发(公网8080 → 内网192.168.1.100:80) iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80 iptables -t nat -A POSTROUTING -d 192.168.1.100 -p tcp --dport 80 -j MASQUERADE iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT # 查看规则 iptables -t nat -L -n -v --line-numbers # 删除规则(按行号) iptables -t nat -D PREROUTING 1
除了 iptables,80km无痕网关(曾用名:80KM端口流量转发程序) 是一款更现代化的转发工具,具备配置热加载、实时监控、更高并发等优势。
// forwarder.json 配置 { "listen": "0.0.0.0:8080", "routers": [ {"from": "0.0.0.0/0", "to": "192.168.1.100:80"}, {"from": "10.0.0.0/8", "to": "192.168.1.101:22"} ] }
# 启动转发服务 80km-forwarder -config forwarder.json
相比 iptables,它无需记忆复杂的 NAT 表结构,配置文件直观,适合频繁调整转发规则的场景。
| 问题 | 原因 | 解决 |
|---|---|---|
| 转发不生效 | IP转发未开 |
sysctl net.ipv4.ip_forward 检查是否为1 |
| 只进不出 | 缺少回程SNAT | DNAT后必须加MASQUERADE |
| 重启后失效 | 规则没保存 |
iptables-save > /etc/iptables/rules.v4 |
| 高并发丢包 | 连接跟踪表满 |
net.netfilter.nf_conntrack_max=1048576 |
一句话总结:开启 ip_forward + 配好 SNAT/DNAT = Linux 转发网关。简单场景用 iptables,复杂/高频变更场景用 80km无痕网关。
Linux 转发命令速查,Linux常见转发命令
Linux 地址转发完全指南:从内核参数到 NAT 实战
Linux NAT转发与网关实战:从iptables到高效流量转发程序
Win系统实现网络转发与端口映射:从 IPEnableRouter 到 RRAS 完整步骤
Win7 IP转发怎么开?3分钟让电脑变成“网络桥接器”
Windows网络转发到底能转哪些协议?为什么只支持TCP
win8 路由转发:Win8路由转发实用指南
Linux 转发命令速查,Linux常见转发命令
Linux NAT转发与网关实战:从iptables到高效流量转发程序
Win系统实现网络转发与端口映射:从 IPEnableRouter 到 RRAS 完整步骤
Win7 IP转发怎么开?3分钟让电脑变成“网络桥接器”
Windows网络转发到底能转哪些协议?为什么只支持TCP
win8 路由转发:Win8路由转发实用指南
国内的转发服务器:实现高效数据传输的实用指南
linux dns服务器转发:实现高效数据传输的实用指南
win10端口转发:高效数据传输的实用指南
Linux Socket转发:从底层原理到实用工具
Linux SSH转发:轻松实现端口数据“跳板”
VPN服务器NAT转发:让流量“借道而行”