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无痕网关 简化配置。

内网穿透工具自托管 vs 云端中转:穿云箭和花生壳优缺点深度分析
内网ip远程控制,借助内网IP实现远程控制的完整指南
远程访问内网IP:打破网络边界的连接艺术
理解Windows系统中的NAT转发功能
内网穿透工具自托管 vs 云端中转:穿云箭和花生壳优缺点分析
手把手配置SSR端口转发:UDP协议支持与高级设置详解
什么是nat123?nat123的核心功能
nat123端口映射:轻松实现外网访问内网
nat123下载:轻松获取内网穿透工具
nat123官网:老牌内网穿透工具