如何在 Ubuntu 中设置网络连接的优先级?

如何在 Ubuntu 中设置网络连接的优先级?

如果一台 Ubuntu 11.04 机器同时连接到 WiFi 和 3G,我该如何设置优先级让应用程序(浏览器等)首先使用 WiFi?如果不可行,则应使用 3G。

基本上,我想设置网络连接的使用顺序。

编辑:我正在寻找一种更简单的方法,这种方法对那些熟悉 Ubuntu/Linux 而不是 Ubuntu/Linux 专家的人来说很有用。

答案1

我很惊讶没有人提到最简单的命令来做到这一点:ifmetric。可以使用 进行安装sudo apt install ifmetric。此命令可用于更改任何接口的度量。优先选择具有较低度量标准的接口用于互联网。

要使用此功能,首先使用命令查看指标route

$ route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.42.0.1       0.0.0.0         UG    100    0        0 eth0
0.0.0.0         10.42.0.2       0.0.0.0         UG    600    0        0 wlan0

这里,eth0的度量较低,因此它比 更受青睐wlan0。如果你想要优先于wlan0,那么就降低它的度量:

sudo ifmetric wlan0 50

现在,路由表如下所示:

$ route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.42.0.2       0.0.0.0         UG    50     0        0 wlan0
0.0.0.0         10.42.0.1       0.0.0.0         UG    100    0        0 eth0

现在 Linux 将用于wlan0互联网。更改将立即生效。

答案2

设置指标是您更改优先级的方式。较高的度量使用起来“更昂贵”,因此如果需要路由流量,操作系统将使用度量最低的接口。如果较低度量的接口关闭,它将使用较高度量的接口,因为它是唯一可用于将流量路由到特定网络/目的地的接口。

文件中指定了指标/etc/网络/接口,链接指向文档。

使用任何文本编辑器编辑文件,识别网络,只需更改参数metric并保存即可。重新启动是重置所有值的最简单方法,无需了解重新启动网络服务的复杂细节。

答案3

  1. 通过操纵路由指标,可以对一般流量的接口进行优先级排序。每条路由都有相关参数,例如跳数和带宽。请参阅route命令手册页中的“metric”选项。

    $ route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref     Use Iface
    0.0.0.0         192.168.1.254   255.255.255.255 U     0      0        0 eth0
    192.168.1.0     0.0.0.0         255.255.255.0   U     256    0        0 eth0
    
  2. 优先考虑应用程序对网络资源的访问通常通过“流量整形”来解决 - 我会使用网络搜索引擎来查看 Ubuntu 或路由器是否可以做到这一点。


脚注。

在 MS Windows 上(但在 Linux 上不是),该netstat -nr命令输出与 相同的信息route print。包括路由指标。

答案4

[更新] 从 Ubuntu 18.04 LTS(服务器)开始,netplan是网络管理的默认包装器。配置 Netplan 是通过YAML文件,默认情况下/etc/netplan/01-netcfg.yaml(更多详细信息这里)。

路由度量由“ ”选项定义metric,该选项要求一个正整数(100通常是默认值)。以下是例子来自参考页面:

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      addresses:
      - 10.0.0.10/24
      - 11.0.0.11/24
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
      routes:
      - to: 0.0.0.0/0
        via: 10.0.0.1
        metric: 100
      - to: 0.0.0.0/0
        via: 11.0.0.1
        metric: 100

路径长度最短的路线metric将成为“首选”网关。(使用:sudo netplan try启用更改)

请注意,在漫游环境中(多个连接,打开和关闭),您可能需要设置optional(布尔)参数true(默认为 false):

network:
  version: 2
  ethernets:
    enred:
      dhcp4: yes
      dhcp4-overrides:
        route-metric: 100
    engreen:
      dhcp4: yes
      dhcp4-overrides:
        route-metric: 200
      # this is plugged into a test network that is often
      # down - don't wait for it to come up during boot.
      optional: true

请注意,在 DHCP 连接的情况下,路由度量的语法略有不同。

您还可以将其用作NetworkManager渲染器,我假设(我自己还没有测试过)它可以让您通过 GUI 工具查看/编辑该部分配置。

renderer(标量)

使用给定的网络后端进行此定义。当前支持networkdNetworkManager。此属性可以在中全局指定networks:,用于设备类型(例如ethernets:)或特定设备定义。默认值为networkd

(参考页面上的最后一个“大”示例展示了两种渲染器的混合使用)。

也可以看看这个问题(askubuntu)

相关内容