linux双网卡跨网段路由转发需先开启ip转发(echo 1 > /proc/sys/net/ipv4/ip_forward 或设net.ipv4.ip_forward=1并sysctl -p),再配置直连路由(如ip route add 192.168.10.0/24 dev eth0)和双向静态路由,必要时添加iptables masquerade实现nat。

Linux 双网卡实现不同网段路由转发,核心在于两件事:开启内核转发 + 配置精准路由。不是简单加两条默认路由就能通,必须区分流量来源和去向,否则会走错出口或回包失败。
开启 IP 转发功能
这是所有转发行为的前提,否则系统直接丢弃非本机目的地址的数据包:
- 临时启用:运行 echo 1 > /proc/sys/net/ipv4/ip_forward
- 永久生效:编辑 /etc/sysctl.conf,确保包含这一行:
net.ipv4.ip_forward = 1,然后执行 sysctl -p
配置直连网段路由(基础连通)
让系统知道每个网卡“直接连着谁”,这是后续策略路由或转发的底层支撑:
- 假设 eth0 地址是 192.168.10.100/24,连接 192.168.10.0/24 网段:
ip route add 192.168.10.0/24 dev eth0 src 192.168.10.100 - eth1 地址是 172.16.20.100/24,连接 172.16.20.0/24 网段:
ip route add 172.16.20.0/24 dev eth1 src 172.16.20.100
这步完成后,两个网段内的主机能直接 ping 通本机对应网卡的 IP,但跨网段还不能通。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
添加跨网段静态路由(明确路径)
告诉本机:要访问对方网段,该把包发给谁(通常是对方网段的网关,或直连设备):
- 若 192.168.10.0/24 网段的其他设备想访问 172.16.20.0/24,需在那些设备上添加路由:
route add -net 172.16.20.0 netmask 255.255.255.0 gw 192.168.10.100 - 同理,在 172.16.20.0/24 网段设备上添加:
route add -net 192.168.10.0 netmask 255.255.255.0 gw 172.16.20.100
如果本机是唯一中转节点(即充当路由器),这两条路由必须双向配置,缺一不可。
可选:配置 NAT 实现共享上网(外网场景)
当其中一个网卡(如 eth0)连公网,另一个(eth1)接私有局域网时,需要地址转换:
- 启用 iptables MASQUERADE:
iptables -t nat -A POSTROUTING -s 172.16.20.0/24 -o eth0 -j MASQUERADE - 保存规则(CentOS/RHEL):
service iptables save 或 iptables-save > /etc/sysconfig/iptables - Ubuntu/Debian 用户可用 iptables-persistent 工具持久化
注意:NAT 是单向增强,仅解决“内网访问外网”,不替代上面的双向静态路由。










