【记录】网络路由、转发与网卡隔离

基础拓扑

A:192.168.10.11

B(双网卡主机)  

eth1:192.168.10.13  

eth2:192.168.11.11

C:192.168.11.13

两大目标说明

  • 目标 1:开启跨网卡转发 → 让 C ↔ A 互通
  • 目标 2:网卡流量隔离 → 禁止两张网卡之间报文互通(关闭转发 + 防火墙兜底)

一、核心知识点回顾

1. 实现跨网段转发三大必要条件(同时满足)

  1. 主机 B 开启 IP 转发(ip_forward=1)
  2. C 配置静态路由:192.168.10.0/24 via 192.168.11.11
  3. A 配置回程路由:192.168.11.0/24 via 192.168.10.13

2. 主机防火墙三条流量链

  1. INPUT:目标 IP 为本机的数据包
  2. OUTPUT:本机软件主动向外发送的数据包
  3. FORWARD:跨网卡转发数据包(网卡 A 进、网卡 B 出)

重点:想要隔离两张网卡,核心管控 FORWARD 链

3. 关键区分

  • IP 转发开关:内核总闸;开关打开只是允许转发,防火墙依然可以拦截;
  • IP 转发关闭:内核直接丢弃跨网卡报文,防火墙 FORWARD 链不再生效;
  • 隔离方案标准组合:关闭 ip_forward + 防火墙禁止双向转发(双重保障)

二、Linux 完整命令(iproute2 + iptables)

环境:设备 B(双网卡 eth1、eth2)

操作 1:开启跨网卡转发(实现 C 访问 A)

复制代码
# 1. 开启内核转发(临时)
sysctl -w net.ipv4.ip_forward=1
# 永久开启:/etc/sysctl.conf 添加 net.ipv4.ip_forward=1
sysctl -p

# 2. 防火墙放行转发流量(允许eth2 ↔ eth1互相转发)
# 默认策略允许转发
iptables -P FORWARD ACCEPT
# 按需细化:允许eth2 <-> eth1转发
iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth2 -j ACCEPT

操作 2:网卡隔离(禁止两张网卡互相转发流量)

两种方案,推荐方案 2 双层防护

方案 2.1 最简方案:直接关闭内核转发

复制代码
sysctl -w net.ipv4.ip_forward=0
# 内核层面直接丢弃跨网卡报文,防火墙无需配置

方案 2.2 双层防护(推荐,即使误开 ip_forward 依然隔离)

复制代码
# 1. 优先关闭转发
sysctl -w net.ipv4.ip_forward=0

# 2. 防火墙阻断双向跨网卡转发
iptables -P FORWARD DROP
# 禁止 eth2 → eth1
iptables -A FORWARD -i eth2 -o eth1 -j DROP
# 禁止 eth1 → eth2
iptables -A FORWARD -i eth1 -o eth2 -j DROP

Linux 查看命令

复制代码
# 路由表
ip route
ip route get 192.168.10.11
# 转发状态
sysctl net.ipv4.ip_forward
# 查看iptables转发规则
iptables -L FORWARD -v

持久化说明

iptables 规则重启失效;生产环境使用 iptables-save /firewalld/nftables 持久配置。


三、Windows 完整操作(路由 + Windows 高级防火墙)

Windows IP 转发(IPEnableRouter)修改注册表后必须重启生效

操作 1:开启跨网卡转发

  1. 开启系统 IP 转发

    reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v IPEnableRouter /t REG_DWORD /d 1 /f

重启电脑

  1. 防火墙放行转发流量 Windows 防火墙默认不会阻止转发流量; 如果开启高级筛选平台策略,需要手动允许 eth2 ↔ eth1 的转发报文。

操作 2:网卡流量隔离(双重防护)

2.1 关闭内核转发

复制代码
reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v IPEnableRouter /t REG_DWORD /d 0 /f

重启电脑

2.2 防火墙兜底策略(防止人为误开启转发)

打开 Windows Defender 防火墙 → 高级设置 → 连接安全规则 / 筛选平台 使用【Windows 筛选平台】配置: 创建出站 / 入站转发过滤规则:

  • 禁止:接口 eth2 接收的数据包 转发至 eth1
  • 禁止:接口 eth1 接收的数据包 转发至 eth2

简易替代测试方案:使用 Wireshark 验证,不熟悉筛选平台可以优先依靠关闭 IP 转发实现隔离。

Windows 查看命令

复制代码
route print
tracert 192.168.10.11
reg query HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v IPEnableRouter

Windows 路由配置复用

复制代码
# 添加静态永久路由
route add 192.168.10.0 mask 255.255.255.0 192.168.11.11 -p
route delete 192.168.10.0

四、两种工作模式配置汇总表(设备 B)

模式 A:启用转发(C 可以访问 A)

  1. ip_forward = 1
  2. 路由配置完整(两端存在回程路由)
  3. 防火墙 FORWARD 链允许 eth1 ↔ eth2 流量

模式 B:网卡隔离(两张网段不能通过 B 互通)

  1. ip_forward = 0 (基础屏障)
  2. 防火墙 FORWARD 链双向阻断两张网卡转发流量(兜底防护)
  3. 不依靠路由表作为唯一隔离手段

五、重要补充知识点

  1. 防火墙 FORWARD 只管控跨网卡转发流量,无法管控本机程序主动访问 举例: 在主机 B 上直接 ping A,属于 OUTPUT 流量;即使阻断 FORWARD,依然可以通。 ⚠️ 隔离两张网络 ≠ 禁止本机访问两个网段。

  2. 测试验证手段

    • 转发是否生效:C ping A;tracert 查看路径经过 B
    • 隔离是否生效:C 无法 ping 通 A;但 B 本机可以同时 ping 通 A、C
  3. 常见误区

  • 只配置防火墙阻断转发,但是忘记关闭 ip_forward;存在配置失效风险;
  • 认为隔离网卡 = 主机不能同时访问两个网段;概念错误: 隔离 = 网段之间不能互相穿过主机转发,主机本身可以同时访问两边。

六、测试方案

  1. 开启转发模式:C ping A 通
  2. 切换隔离模式(关闭 ip_forward + 防火墙阻断转发):C ping A 不通;
  3. 在 B 本机分别 ping A、ping C,依然正常连通(用来区分【跨网卡转发】和【本机访问】)
相关推荐
wuminyu3 小时前
Kafka中sendfile与mmap实现机制解析
java·linux·c语言·jvm·c++
新时代牛马3 小时前
嵌入式网络完整篇:从LwIP/以太网驱动到 Linux netdev 与排障
linux·网络·php
猿与禅4 小时前
Linux(Ubuntu)入门到实战:系统管理、常用命令与权限体系完整指南
linux·ubuntu·apt·进程管理·系统运维·用户权限·vi/vim
前端世界4 小时前
Linux服务器实战:NTP时间同步、SELinux权限与rsyslog日志管理,一次搞懂三大运维问题
linux·运维·服务器
Android系统攻城狮4 小时前
Linux Gstreamer深度解析之gst_audio_converter_new调用流程与实战(二十)
linux·运维·服务器·gstreamer音视频·音视频进阶
上海云盾-小余4 小时前
BGP 高防底层原理:TCP 异常流量识别与清洗机制
运维·网络·tcp/ip
captain3764 小时前
▲网络原理(2)-TCP
java·服务器·网络·tcp/ip·java-ee
同元软控5 小时前
从排队、碰撞到信号波形:基于Sysevents的网络—信号一体化仿真
网络
言乐65 小时前
Python加速器4跨境网络加速器
运维·服务器·开发语言·网络·python
疯狂打码的少年7 小时前
【计算机网络】IPv6基础(特点、表示法、与IPv4对比)
网络·笔记·计算机网络