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

基础拓扑

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,依然正常连通(用来区分【跨网卡转发】和【本机访问】)
相关推荐
木子欢儿2 小时前
Intel 架构的 MacBook Pro 运行 Linux 发热量高解决
linux·运维·服务器
夜雪一千2 小时前
TCP数据包长什么样?拆解TCP报文头部结构
网络·网络协议·tcp/ip
德迅云安全杨德俊3 小时前
应用加速:一站式解决企业跨域网络加速与安全双重难题
网络·安全·ddos
瓦学妹3 小时前
什么是网络索引?它是如何工作的?
大数据·网络·python·网络爬虫
清水迎朝阳5 小时前
客户端软件 — 用户统计方案
服务器·c++·客户端·用户统计
会编程的土豆5 小时前
Go 模板初识
linux·运维·服务器
for_ever_love__5 小时前
iOS:网络请求再学习
网络·学习·ios·objective-c
腾讯蓝鲸智云5 小时前
标杆客户实践提炼:CFlow 版本价值流模板实战指南
运维·服务器·自动化·云计算·devops
阿标的博客6 小时前
Active Directory 组织单位和用户
服务器
一名普通的电源工程师6 小时前
E0512XT-1WR3 适配优选 钡特电源 DF1-05D12XT|1W 隔离5V转±12V模块电源选型参数技术解析
大数据·网络·人工智能