Linux网卡转发:让服务器变身路由器

时间:2026-05-09 13:26

网卡转发是Linux网络的核心功能之一,简单说就是让一块网卡收到的数据包,从另一块网卡发出去。当你的Linux服务器有两块以上网卡时,它就能像路由器一样在不同网络之间传递数据-1

一、开启内核IP转发(最关键的一步)

默认情况下,Linux不会转发任何数据包。要开启这个功能,只需一条命令:

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

# 永久开启:编辑 /etc/sysctl.conf,找到并修改
net.ipv4.ip_forward = 1
# 然后执行
sysctl -p

这一步是网卡转发的基础,所有后续操作都依赖它-1-4

二、两个核心应用场景

场景1:让内网服务器上网(SNAT)

如果你有一台内网服务器(IP: 192.168.1.100)没有公网IP,而你的Linux服务器有两块网卡(eth0接外网、eth1接内网),可以通过iptables让内网服务器共享上网:

bash
# 将内网过来的流量伪装成Linux服务器的公网IP发出
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

这就是典型的源地址转换(SNAT),俗称“上网代理”-6

场景2:把公网访问转到内网(DNAT/端口转发)

反过来,你想让外网用户访问Linux服务器的8080端口,实际访问的是内网Web服务器的80端口:

bash
# 修改目标地址:将访问8080的请求转发到内网服务器
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

这就是目的地址转换(DNAT),常用于端口映射和内网服务暴露-6-8

三、典型配置案例:Linux做路由器

假设你有一台双网卡Linux:

  • eth0:连接外网(公网IP或上级路由器)

  • eth1:连接内网(IP: 192.168.1.1)

完整配置如下:

bash
# 1. 开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward

# 2. 配置iptables规则
# 内网设备上网用(SNAT)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 外网访问内网服务器(可选,DNAT)
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

# 3. 保存规则(以Ubuntu/Debian为例)
apt-get install iptables-persistent
iptables-save > /etc/iptables/rules.v4

四、实用工具推荐

如果你不想敲命令,需要更直观的管理方式,可以试试这款80km无痕网关

👉 https://www.80km.com/dkzf/

它提供图形化管理界面,可以轻松配置端口转发规则,支持多台后端服务器的流量分发和故障转移,几分钟就能完成设置。

五、常用排查命令

开启转发后如果网络不通,用这些命令检查:

bash
# 查看IP转发是否开启
cat /proc/sys/net/ipv4/ip_forward

# 查看nat表规则
iptables -t nat -L -n -v

# 抓包看流量是否经过
tcpdump -i eth0 -n host 192.168.1.100

总结

Linux网卡转发的本质就两步:开启IP转发 + 配置iptables规则。SNAT让内网设备上网,DNAT让外网访问内网服务。掌握了这两个核心概念,你的Linux服务器就能变身成一台灵活的网络路由器。

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