当前位置: 首页 > news >正文

ubuntu 多网络路由优先级问题

问题描述

一个ubuntu20.04系统的NUC连着一个有线网和WIFI,WIFI是有网络的,有线网只是一个局域网用于另外一个机器进行no machine远程控制的,之前的时候NUC可以正常使用有线网控制,使用WIFI上网,但是现在突然只能使用有线网控制了,WIFI也连接着但是上不了网了,应该如何排查

问题解决

好的,这个问题非常典型,通常出现在一个多宿主(multi-homed)系统上,即一个设备连接到多个网络。核心问题在于路由和DNS的优先级。

系统必须决定当访问互联网时,应该通过哪个网络接口(有线网卡还是无线网卡)发送数据。当两个网络都连接时,系统可能会错误地将没有互联网访问的那个网络(你的有线网)设置为“默认路由”,导致所有发往互联网的流量都走错了路。

下面我们按照一个清晰的排查思路来解决这个问题。


第1步:诊断问题(信息收集)

在做任何修改之前,我们先确认一下当前的系统状态,这会帮助我们精确地定位问题。请在NUC的终端里执行以下命令,并观察输出。

1.1 查看路由表

这是最关键的一步。路由表告诉系统数据包应该往哪里走。

ip route show

或者使用旧命令:

route -n

你应该会看到类似这样的输出:

default via 192.168.10.1 dev enp3s0 proto dhcp metric 100 
default via 192.168.1.1 dev wlp2s0 proto dhcp metric 600 
192.168.1.0/24 dev wlp2s0 proto kernel scope link src 192.168.1.123 metric 600 
192.168.10.0/24 dev enp3s0 proto kernel scope link src 192.168.10.50 metric 100 

分析:

  • default via ... 这一行就是默认路由。它定义了所有非本地流量的出口。
  • dev enp3s0 通常代表有线网卡(enp...eth...)。
  • dev wlp2s0 通常代表无线网卡(wlp...wlan...)。
  • metric 值越小,优先级越高。

你的问题很可能是:
default via ... 这一行指向了你的有线网卡(例如 dev enp3s0),并且它的 metric 值比WIFI的 metric 值要小。因为有线网不通外网,所以你就上不了网了。

1.2 查看网络接口信息
ip addr show

这个命令会列出所有网络接口及其IP地址。请确认你的有线网卡和无线网卡都获取到了正确的IP地址。

1.3 测试网络连通性
# 1. Ping一个公共IP地址,这可以绕过DNS问题,直接测试路由
ping -c 4 8.8.8.8# 2. 如果上一步不通,尝试指定从WIFI网卡ping
#    首先找到你的WIFI网卡名字,比如叫 wlp2s0
ping -I wlp2s0 -c 4 8.8.8.8# 3. 如果第一步通了,再Ping一个域名,测试DNS
ping -c 4 baidu.com
  • 如果 ping 8.8.8.8 不通,但 ping -I wlp2s0 8.8.8.8 能通,那100%是默认路由的问题。
  • 如果 ping 8.8.8.8 能通,但 ping baidu.com 不通,那可能是DNS被有线网络覆盖了。
1.4 查看DNS配置
cat /etc/resolv.conf

查看 nameserver 指向的是哪个IP。如果它指向了你有线局域网的网关或DNS服务器,那么DNS解析也会失败。


第2步:解决问题(修改配置)

根据诊断结果,最可能的原因是有线网络的路由优先级过高。我们需要告诉系统:“这个有线网络连接只用于访问它所在的局域网,不要用它作为上网的出口。”

这是最推荐、最彻底的解决方法,可以通过图形界面或命令行完成。

方法一:通过图形界面(推荐,最简单)
  1. 点击屏幕右上角的网络图标,选择 “有线设置” (Wired Settings) 或 “网络设置” (Network Settings)。

  2. 在弹出的窗口中,找到你的有线连接(通常叫 “Wired” 或 “有线连接 1”),点击它旁边的齿轮图标进行编辑。

  3. 在编辑窗口中,切换到 “IPv4” 标签页。

  4. 点击下方的 “路由” (Routes…) 按钮。

  5. 在弹出的路由设置窗口中,勾选 “仅用于此网络上的资源” (Use this connection only for resources on its network) 这个选项。

  6. 点击“确定”(OK),然后点击“应用”(Apply)。

  7. 为了让设置生效,可以断开有线连接再重新连接,或者直接在右上角网络图标里把有线网关掉再打开。

这个设置的作用是: 它会为这个有线连接创建一条指向其局域网的路由,但不会为它创建默认路由。这样,系统的默认路由就会自动地、唯一地指向你的WIFI连接。

方法二:通过命令行(nmcli,更专业)

如果你更喜欢命令行,可以使用 nmcli 工具。

  1. 首先,列出你所有的网络连接,找到有线连接的名字。

    nmcli connection show
    

    你会看到类似列表,比如 NAME 列下有 “Wired connection 1”。

  2. 修改这个连接的配置,告诉它永远不要成为默认路由。

    # 把 "Wired connection 1" 替换成你自己的有线连接名称
    sudo nmcli connection modify "Wired connection 1" ipv4.never-default yes
    sudo nmcli connection modify "Wired connection 1" ipv6.never-default yes
    
  3. 重新激活连接以使设置生效。

    # 同样,替换成你的连接名称
    sudo nmcli connection down "Wired connection 1"
    sudo nmcli connection up "Wired connection 1"
    

第3步:验证修复

在完成上述修改后,再次进行第1步的诊断操作。

  1. 再次查看路由表:

    ip route show
    

    现在你应该看到 default via ... 这一行只剩下WIFI网卡的那一条了。有线网卡的路由应该只剩下一条指向其本地子网的(例如 192.168.10.0/24 dev enp3s0 ...)。

  2. 再次测试网络:

    ping 8.8.8.8
    ping baidu.com
    

    现在应该都能通了。

  3. 同时测试NoMachine:
    在另一台机器上尝试通过NoMachine连接NUC,由于有线局域网的路由依然存在,这个连接应该也完全不受影响。

总结

这个问题的本质是路由冲突。当Ubuntu的NetworkManager检测到两个活动的连接时,它会根据一定的规则(如metric值,通常有线连接的metric更低/优先级更高)来设置默认路由。通过明确告诉系统哪个连接不应该作为默认路由,我们就能完美解决这个冲突,实现“有线上局域网,WIFI上互联网”的目标。

如果以上步骤操作后仍有问题,请将第1步中几个诊断命令的输出结果贴出来,以便进一步分析。

在 Ubuntu 20.04 上,当有线网络和 WiFi 同时连接但 WiFi 无法上网时,可能是 路由优先级、网络配置冲突DNS 问题 导致的。以下是详细的排查步骤:


1. 检查当前网络接口和路由

查看网络接口状态
ip a

确认:

  • eth0(有线网)和 wlan0(WiFi)是否都正常获取 IP 地址。
  • WiFi 是否连接到正确的 SSID。
查看路由表
ip route show

route -n

重点关注:

  • 默认网关(0.0.0.0default 是否指向 WiFi 的网关(通常是 wlan0 的 IP)。
  • 如果默认网关指向有线网(eth0),则 WiFi 流量会被错误路由。
示例(正常情况)
default via 192.168.1.1 dev wlan0  # WiFi 网关
192.168.100.0/24 dev eth0 proto kernel scope link src 192.168.100.2  # 有线局域网

如果默认网关是 eth0 的 IP(如 192.168.100.1),则需要调整。


2. 调整网络优先级(让 WiFi 优先)

Ubuntu 默认使用 连接优先级(metric) 决定默认路由。

方法 1:修改 Netplan 配置(推荐)
  1. 编辑 Netplan 配置文件:
    sudo nano /etc/netplan/01-network-manager-all.yaml
    
  2. 确保 WiFi 的 metric 低于有线网(数值越小优先级越高):
    network:version: 2renderer: NetworkManagerethernets:eth0:dhcp4: truedhcp4-overrides:route-metric: 200  # 有线网优先级较低wifis:wlan0:dhcp4: truedhcp4-overrides:route-metric: 100  # WiFi 优先级较高access-points:"你的WiFi名称":password: "你的WiFi密码"
    
  3. 应用更改:
    sudo netplan apply
    
方法 2:手动删除有线网关(临时方案)

如果不想修改 Netplan,可以临时删除有线网的默认路由:

sudo ip route del default via <有线网关IP> dev eth0

(重启后会恢复)


3. 检查 DNS 配置

如果 WiFi 能 ping 通外网 IP(如 8.8.8.8)但无法访问域名,可能是 DNS 问题。

检查当前 DNS
systemd-resolve --status

cat /etc/resolv.conf
手动设置 DNS
sudo nano /etc/resolv.conf

添加:

nameserver 8.8.8.8
nameserver 1.1.1.1

(注意:如果使用 NetworkManager,可能需要通过 nmcli 修改 DNS)


4. 禁用 IPv6(可选)

某些网络环境下 IPv6 可能导致问题,可以临时禁用:

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

(永久生效需修改 /etc/sysctl.conf


5. 检查 NoMachine 配置

确保 NoMachine 绑定到有线网 IP(如 192.168.100.2),而不是 0.0.0.0,避免占用所有网络接口。


6. 其他排查

  • 重启网络服务
    sudo systemctl restart NetworkManager
    
  • 测试 WiFi 单独工作
    拔掉有线网,确认 WiFi 能否正常上网。
  • 检查防火墙
    sudo ufw status  # 确认是否阻止了 WiFi 流量
    

总结

  1. 路由问题(最常见):确保默认网关是 WiFi 的网关。
  2. DNS 问题:检查是否能解析域名。
  3. 优先级配置:通过 Netplan 或 route-metric 调整。
  4. NoMachine 干扰:确认其仅绑定到有线局域网 IP。

如果仍有问题,请提供以下信息:

  • ip a 输出
  • ip route show 输出
  • ping 8.8.8.8ping google.com 结果
http://www.dtcms.com/a/298599.html

相关文章:

  • 3020雕刻机脱机自定义指令
  • SIP广播对讲系统:构建高效智能的语音通信网络
  • Yolo底层原理学习(V1~V3)(第一篇)
  • DIY ESP32录音机:用开发板打造你的迷你录音设备
  • vue3感悟
  • KFS同步服务离线提示ORA-00972: 标识符过长
  • Chrome插件学习笔记(三)
  • 【7 周速成通关】单片机从理论到实操速学路径(附知识图谱)
  • kettle 8.2 ETL项目【三、加载数据】
  • MEMS 定向短节在振动环境下精度有保障吗?
  • 中国航天集团实习第一周总结
  • 利用Trae将原型图转换为可执行的html文件,感受AI编程的魅力
  • 企业微信H5应用OAuth2登录,企业微信授权登录
  • RocketMQ 做成服务启动
  • FastGPT:重新定义企业专属知识库的灵活部署
  • Linux进程信号——信号产生
  • 【LeetCode 热题 100】22. 括号生成——(解法一)选左括号还是选有括号
  • Linux嵌入式工程师学习路线
  • Linux系统基本配置以及认识文件作用
  • 执行测试时测试数据准备困难如何处理?
  • 汪小菲食通达公司成立新零售公司,布局餐饮零售新赛道
  • 【算法】动态规划 · 上篇
  • Python day24
  • CRM 系统:实现商机全流程管理的关键
  • Qt XML 与 JSON 数据处理方法
  • 文搜图/图搜图
  • OSPF 协议(多区域)
  • Inception网络架构:深度学习视觉模型的里程碑
  • 去甲基化药物联合DLI治疗AML1-ETO阳性
  • 图书推荐-由浅入深的大模型构建《从零构建大模型》