如果一台 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
通过操纵路由指标,可以对一般流量的接口进行优先级排序。每条路由都有相关参数,例如跳数和带宽。请参阅
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
优先考虑应用程序对网络资源的访问通常通过“流量整形”来解决 - 我会使用网络搜索引擎来查看 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
(标量)使用给定的网络后端进行此定义。当前支持
networkd
和NetworkManager
。此属性可以在中全局指定networks:
,用于设备类型(例如ethernets:
)或特定设备定义。默认值为networkd
。
(参考页面上的最后一个“大”示例展示了两种渲染器的混合使用)。
也可以看看这个问题(askubuntu)。