双网卡服务器校园网访问故障排查与解决

一、问题背景

某服务器部署双网卡:

  • 网卡 1(eno1):配置校园网管理员分配的固定 IP(如 172.18.101.107/24),直连校园网光猫,用于校园内网通信;
  • 网卡 2(enp2s0):连接拨号上网路由器,获取路由器分配的私网 IP(如 192.168.31.100/24),用于公网访问,路由器支持 WiFi 功能。

异常现象

  1. 外部 PC 通过 WiFi 连接服务器所在路由器时,既能访问服务器内网 IP(172.18.101.107),也能访问公网 IP(192.168.31.100),tracert 内网 IP 显示路由路径为 "PC→路由器(192.168.31.1)→校园网网关(10.97.0.1)→服务器";
  2. 外部 PC 通过网线直连校园网(不经过路由器)时,无法访问服务器内网 IP(172.18.101.107);
  3. 禁用服务器公网 IP 网卡(enp2s0)后,内网 IP(172.18.101.107)仍无法被校园网直连设备访问;
  4. 已排除服务器防火墙干扰,校园网整体处于 10.0.0.0/8 子网下。

二、故障排查过程

1. 先查网络配置文件(Netplan)

校园网环境下服务器网络配置常因多次调整出现冗余,首先检查/etc/netplan/目录下的配置文件(如 01-network-manager-all.yaml),确认:

  • 网卡 1(eno1)的固定 IP、子网掩码、网关(校园网光猫对应网段网关,如 172.18.101.1)配置正确,无多余无效配置;
  • 网卡 2(enp2s0)的 DHCP 获取方式正常,与路由器网段匹配;
  • 无配置冲突(如同一网段重复 IP、网关指向错误)。
    本次排查中,Netplan 配置无明显异常,排除配置文件混乱导致的基础网络问题。

2. 关键:分析路由表(ip route show)

通过ip route show命令查看服务器路由表,输出核心信息如下(简化后):

bash 复制代码
default via 192.168.31.1 dev enp2s0 proto dhcp metric 103;
172.18.101.0/24 dev eno1 proto kernel scope link src 172.18.101.107 metric 102;
192.168.31.0/24 dev enp2s0 proto kernel scope link src 192.168.31.100 metric 103

路由表问题定位

  • 服务器默认路由(default)指向公网网卡(enp2s0)的网关 192.168.31.1(路由器), metric 值 103(优先级低于内网网卡的 102,但默认路由优先级最高);
  • 当校园网直连 PC 访问服务器内网 IP(172.18.101.107)时,PC 的请求包能正常到达服务器(因 172.18.101.0/24 网段路由指向 eno1 网卡),但服务器回包时,会优先匹配默认路由,将回包通过公网网卡(enp2s0)发给路由器(192.168.31.1
  • 路由器无法识别校园网 PC 的 IP(10.0.0.0/8 网段),导致回包被丢弃,最终出现 "能发请求,收不到响应" 的访问失败现象。

3. 验证故障原因

禁用公网网卡(enp2s0)后,默认路由失效,但此时服务器仍未配置内网网段的回包路由,导致校园网 PC 的请求包到达服务器后,无对应路由转发回包,因此内网 IP 仍无法访问 ------ 进一步验证 "路由表回包策略缺失" 是核心问题。

三、解决方案:配置策略路由

策略路由可根据 "流量来源网段" 指定不同路由表,实现 "校园网流量走内网网卡回包,公网流量走公网网卡回包",具体步骤如下:

1. 基础准备

确认校园网光猫对应内网网段(172.18.101.0/24)的网关 IP(假设为 172.18.101.1,可通过校园网管理员获取或用arp -a查看光猫 MAC 对应的 IP)。

2. 创建自定义路由表

Linux 系统默认有 3 个路由表(local、main、default),需新建一个专门用于校园网流量的路由表(命名为 campus,表号可自定义,如 200):

bash 复制代码
# 编辑路由表配置文件,添加自定义表
sudo vim /etc/iproute2/rt_tables
# 在文件中添加一行(表号200,表名campus)
200     campus

3. 添加策略路由规则与路由

bash 复制代码
# 1. 向campus表添加路由:172.18.101.0/24网段走eno1网卡,网关为光猫内网网关
sudo ip route add 172.18.101.0/24 dev eno1 via 172.18.101.1 table campus
# 2. 向campus表添加默认路由:来自校园网(10.0.0.0/8)的流量,默认走eno1网卡回包
sudo ip route add default dev eno1 via 172.18.101.1 table campus
# 3. 添加策略规则:来自10.0.0.0/8网段的流量,使用campus路由表
sudo ip rule add from 10.0.0.0/8 table campus priority 100

4. 测试验证

  1. 外部 PC 通过网线直连校园网,ping 服务器内网 IP(172.18.101.107),查看是否通断;
  2. traceroute ``172.18.101.107(Linux)或tracert ``172.18.101.107(Windows)查看路由路径,确认回包是否走校园网网关;
  3. 验证服务器公网访问功能(如访问外网网站),确保双网卡功能正常。

5. 持久化配置(避免重启失效)

通过 Netplan 将策略路由配置写入配置文件,确保服务器重启后仍生效:

bash 复制代码
# 编辑Netplan配置文件
sudo vim /etc/netplan/01-network-manager-all.yaml
network:
  version: 2
  ethernets:
    eno1:  # 内网网卡
      addresses: [172.18.101.107/24]
      routes:
        - to: 10.0.0.0/8
          via: 172.18.101.1
          table: 200
        - to: default
          via: 172.18.101.1
          table: 200
      routing-policy:
        - from: 10.0.0.0/8
          table: 200
          priority: 100
    enp2s0:  # 公网网卡
      dhcp4: true  # 从路由器获取DHCP
  renderer: NetworkManager

配置完成后,执行sudo netplan apply使配置生效。

四、总结

双网卡服务器的网络访问问题,核心常出在 "路由转发策略"------ 默认路由可能导致不同来源的流量回包路径错误。本次故障通过 "自定义路由表 + 策略规则",精准区分校园网(10.0.0.0/8)和公网流量,实现 "哪里来的流量,从哪里回",既解决了校园网直连访问问题,又保留了双网卡的功能定位。​

后续遇到同类 "特定网段访问异常" 问题,可优先排查路由表的回包策略,策略路由是解决多网卡、多网段流量转发的高效方案。​

相关推荐
ICT系统集成阿祥2 小时前
VLAN间通信的技术原理与实验案例
网络·智能路由器
艾菜籽2 小时前
网络原理-网络层
网络
ZHANG13HAO2 小时前
Android 13 完整实现 USB 网卡支持与网络优先级配置(USB>WiFi>4G)
android·网络
小李飞刀李寻欢2 小时前
kauditd0 病毒/挖矿程序完全清除方法初试
网络·安全·病毒·挖矿
多多*3 小时前
2025最新centos7安装mysql8 相关 服务器配置 纯命令行操作 保姆级教程
java·运维·服务器·mysql·spring·adb
荣光波比3 小时前
Docker(二)—— Docker核心功能全解析:网络、资源控制、数据卷与镜像构建实战
运维·网络·docker·容器·云计算
yenggd3 小时前
华为本地pbr及mqc及traffic-filter使用案例
运维·服务器·华为
lang201509283 小时前
MySQL专用服务器自动调优指南
服务器·mysql
VVVVWeiYee5 小时前
EIGRP
网络