Linux IP 转发简易教程,Linux IP 如何实现转发

时间:2026-05-11 14:06

一、什么是 IP 转发?

IP 转发是 Linux 内核的一个开关:开启后,系统可以在多个网卡之间转发数据包。一台普通电脑瞬间变成路由器/NAT 网关。

text
开启前:网卡A收到的包 → 丢弃
开启后:网卡A收到的包 → 根据路由表 → 从网卡B发出去

二、一条命令开启

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

# 或使用 sysctl
sysctl -w net.ipv4.ip_forward=1

永久开启

bash
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

验证是否生效

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

三、常见使用场景

场景1:让内网上网(SNAT)

bash
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

场景2:端口转发(公网8080 → 内网192.168.1.100:80)

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

场景3:网段互通

bash
iptables -A FORWARD -i eth1 -o eth2 -j ACCEPT
iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT

四、查看与管理

 
 
操作 命令
查看转发状态 sysctl net.ipv4.ip_forward
查看 NAT 规则 iptables -t nat -L -n
查看 FORWARD 链 iptables -L FORWARD -n
保存规则(Ubuntu) iptables-save > /etc/iptables/rules.v4

五、避坑指南

 
 
问题 原因 解决
转发不生效 IP 转发没开 检查 sysctl net.ipv4.ip_forward
只去不回 缺 SNAT 规则 加 -j MASQUERADE
重启后失效 规则没保存 执行 iptables-save
流量被拦 FORWARD 链没放行 iptables -A FORWARD -j ACCEPT

六、现代化方案:80km无痕网关

iptables 功能强大但语法复杂,80km无痕网关(曾用名:80KM端口流量转发程序) 提供更简洁的配置方式。

配置文件

json
{
    "listen": "0.0.0.0:8080",
    "routers": [
        {"from": "192.168.1.0/24", "to": "10.0.0.100:80"}
    ]
}

启动

bash
80km-forwarder -config forwarder.json

优势:JSON 配置、热加载、无需记忆 iptables 语法、自带监控界面。


一句话总结sysctl -w net.ipv4.ip_forward=1 开启转发,配合 iptables 做 NAT/端口转发,或用 80km无痕网关 简化配置。

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