Ubuntu18.04有线网络和无线网络的优先级设置

问题描述

在工控机上使用ubuntu18.04进行控制,将激光雷达等其它硬件通过网线连接到工控机的网口,并且工控机使用无线网卡进行连接因特网(浏览网页)。

在这种情况下,我们经常遇到以下的问题:工控机同时连接了多个有线网口以及用无线网卡连接了因特网,但是打开浏览器时无法连接到因特网或者是使用apt工具下载安装功能包时无法连接到因特网。

这是因为工控机默认为网口连接的网络优先级大于无线网络的优先级(只有无线网络才能连接因特网)

解决方法

  • 通过修改网络的metric值提高无线网卡的使用优先级。
  • metric是为路由指定的跃点数(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中目标地址最为匹配的路由。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性等。metric的值越小,优先级越高。如果两块网卡的metric值相同,就会因为抢占优先级出现网卡冲突,将会有一块网卡无法连接。

具体方法

1.方法一:使用终端命令临时提升无线网卡的优先级

方法一:适用于临时调试时,提升所连临时网络的优先级,断网后重连失效,工控机重启后还需要重新设置

查询路由表:

route -n

结果如下:

英文界面:

在这里插入图片描述

 中文界面:

在这里插入图片描述

图中Gateway一列显示的是网关IP,Iface一列显示的是网卡名称(eno1、enp6s0是有线网口名称,wlp1s0是无线网卡名称)。

1.2 终端输入命令,指定metric值

1.2 终端输入命令,指定metric的值

可以通过网卡名称指定或者通过网关IP指定(任选其一即可)

第一种:

  1. 通过网卡名称指定metric值,首次操作安装ifmetric,然后进行更改metric值
  • sudo apt install ifmetric:安装ifmetric;

sudo ifmetric wlp1s0 90:命令中wlp1s0是无线网卡的名称,更改无线网卡wlp1s0的跃点数(metric值)为90(数值越小,优先级越高)

sudo apt install ifmetric
sudo ifmetric wlp1s0 90

终端执行命令route -n重新查询路由表,检查对应的metric值是否设置成功,结果如下图。

英文界面:

在这里插入图片描述

中文界面:
在这里插入图片描述

图中显示wlp1s0无线网卡的metric值设置为90,低于其他网络的metric值,所以会优先使用。此时浏览器将会使用无线网卡上网。

第二种:

  • 通过网关IP指定metric值
  • ip route add default via 192.168.43.1 metric 80
    

    命令中192.168.43.1是无线网卡所连的网关IP。
    终端执行命令route -n重新查询路由表,检查对应的metric值是否设置成功,结果如下图。

    英文界面:

  • 在这里插入图片描述

    图中显示网关192.168.43.1的metric值设置为80,低于其他网络的metric值,所以会优先使用。此时浏览器将会使用192.168.43.1网关上网。

2.方法二:使用netplan配置网络

方法一:方法二适用于长期调试时,提升所连网络的优先级,不用每次在终端输入命令

  • 查看配置文件
ls /etc/netplan

可以看到配置文件名称。

  • 打开配置文件
sudo gedit /etc/netplan/*.yaml

命令中ls /etc/netplan中看到的文件名,比如我的是50-cloud-init.yaml。

  • 编辑配置文件
    
    network:
      version: 2
      ethernets:
        eno1: #网卡1名称,使用ifconfig -a可以查看
          dhcp4: false #false-dhcp4关闭,true-dhcp4开启
          addresses: [192.168.1.81/24] #设置本机IP及掩码
          routes:
            - to: 0.0.0.0/0
              via: 192.168.1.1 #设置路由网关
              metric: 150 #设置metric值
          optional: true
        eno4: #网卡2名称
          dhcp4: true
          dhcp4-overrides:
            route-metric: 200
      wifis:
        wlp2s0b1: #无线网卡名称
          dhcp4: true
          dhcp4-overrides:
            route-metric: 90
    

    以上代码中展示了两种设置metric值的语法,读者可自行选择,注意要将代码中的网卡名称改为自己电脑的对应网卡名称。
    详细的配置文件说明可以参考链接Ubuntu 18.04 LTS以上版本 使用 Netplan 配置网络

  • 测试配置文件
  • sudo netplan try
    

  • 应用配置文件
  • sudo netplan apply
    

终端执行命令route -n查询路由表,检查对应的metric值是否设置成功。

文章二:
无线网卡访问外网,有线网卡访问内网

比如:
有线网卡的ip地址为172.1.2.3,子网掩码为255.255.255.0
无线网卡的ip地址为192.168.1.111,子网掩码为255.255.255.0

如果只是想通过无线网卡访问外网,那么只需要提高无线网卡的优先级即可。
那我们使用命令:

ip route show


查看路由表如下:

default via 192.168.1.1 dev enx2 proto dhcp metric 600 
default via 172.1.2.1 dev enp4 proto dhcp metric 100 
172.1.2.0/24 dev enp4 proto kernel scope link src 172.1.2.3 metric 100 
192.168.1.0/24 dev enx2 proto kernel scope link src 192.168.1.111 metric 600

其中enx2是我的无线网卡设备名,enp4是我的有线网卡设备名
可以看到,有线网卡是通过网关172.1.2.1默认访问网络的,它的跃点(metric)为100
而无线网卡是通过网关192.168.1.1默认访问网络的,它的跃点(metric)为600

由于系统会优先选择跃点较低的网卡进行连接,所谓网络请求都走了有线网卡
那么我们只需要把有线网卡的跃点设置更高,就会降低其优先级。
可执行命令:

sudo ip route del default via 172.1.2.1 dev enp4 proto dhcp metric 100

sudo ip route add default via 172.1.2.1 dev enp4 proto dhcp metric 1000

或者直接删除有线网卡的默认路由设置:

sudo ip route del default via 172.1.2.1 dev enp4 proto dhcp metric 100

既可改为使用无线网卡访问网络。

这样一来,除了172.1.2.0/24以外的网络连接都会走无线网卡
但我还想让其他内部的子网172.1.3.0也走有线网卡
那么我可以添加子网路由信息:

sudo ip route add 172.1.3.0/24 dev enp4 proto kernel scope link src 172.1.2.3 metric 100

或者直接添加ip路由信息:

sudo ip route add 172.1.4.1 dev enp4 proto kernel scope link src 172.1.2.3 metric 100

最终的我路由配置为:

default via 192.168.1.1 dev enx2 proto dhcp metric 600 
172.1.2.0/24 dev enp4 proto kernel scope link src 172.1.2.3 metric 100 
172.1.3.0/24 dev enp4 proto kernel scope link src 172.1.2.3 metric 100
172.1.4.1 dev enp4 proto kernel scope link src 172.1.2.3 metric 100
192.168.1.0/24 dev enx2 proto kernel scope link src 192.168.1.111 metric 600

那么我的电脑就会:
通过有线网卡访问172.1.2.0/24和172.1.3.0/24两个子网内的设备
通过有线网卡访问172.1.4.1这一单独的设备
其他连接均通过无线网卡进行访问。

### Ubuntu 18.04 双网卡配置 对于Ubuntu 18.04上的双网卡设置,可以通过Netplan工具来实现复杂的路由需求。当存在两个网络接口时,通常一个用于内部通信(如局域网),另一个则负责外部互联网连接。 #### 使用 Netplan 进行静态 IP 默认网关设定 为了使特定流量通过指定的网卡传输,在`/etc/netplan/`目录下创建或编辑YAML格式的配置文件[^4]: ```yaml network: version: 2 ethernets: enp4s0: # 假设这是有线网卡名称 dhcp4: no addresses: - 172.1.2.3/24 gateway4: 172.1.2.1 nameservers: addresses: [8.8.8.8, 8.8.4.4] wlp3s0: # 假设这是无线网卡名称 dhcp4: yes ``` 上述配置指定了有线网卡(`enp4s0`)具有固定的IPv4地址以及相应的网关,并启用了Google DNS服务;而无线网卡(`wlp3s0`)采用DHCP自动获取IP信息。 #### 添加额外子网路由规则 为了让来自不同子网的数据包能够按照预期路径转发出去,比如让属于172.1.3.0/24范围内的请求继续沿用有线路由器发送,则需执行如下命令添加自定义路由表项[^1]: ```bash sudo ip route add 172.1.3.0/24 dev enp4s0 proto kernel scope link src 172.1.2.3 metric 100 ``` 这条指令告诉操作系统针对该特殊子网的所有数据流都应经由`enp4s0`(即有线适配器)发出,同时设置了较低优先级(高数值意味着低优先度)。 #### 应用更改并验证效果 完成以上修改之后,记得应用新的网络参数并通过重启计算机或者运行下面这行代码立即生效: ```bash sudo netplan apply ``` 最后,利用`ping`, `traceroute`等诊断工具测试连通性确认实际使用的出口是否符合设计初衷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值