如果将Ubuntu 11.04计算机同时连接到WiFi和3G,如何设置优先级以使应用程序(浏览器等)首先使用WiFi?如果不可用,则应使用3G。
基本上,我想设置网络连接的使用顺序。
编辑:我正在寻找一种更简单的方法,该方法对于那些既熟悉又不是Ubuntu / Linux专家的人会很有用。
如果将Ubuntu 11.04计算机同时连接到WiFi和3G,如何设置优先级以使应用程序(浏览器等)首先使用WiFi?如果不可用,则应使用3G。
基本上,我想设置网络连接的使用顺序。
编辑:我正在寻找一种更简单的方法,该方法对于那些既熟悉又不是Ubuntu / Linux专家的人会很有用。
Answers:
我很惊讶,没有人提到执行此操作的最简单命令:ifmetric
。可以使用安装sudo apt-get install ifmetric
。此命令可用于更改任何接口的度量。具有较低度量标准的接口是 Internet的首选。
要使用此功能,请首先使用以下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
metric较低,因此它将是首选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
用于Internet。更改将立即反映出来。
crontab -e
,然后添加行结尾:@reboot sudo ifmetric wlan0 50
。
设置指标是您更改优先级的方式。度量越高,使用起来就越“昂贵”,因此,如果OS需要路由流量,则OS将使用度量最低的接口。万一较低的度量标准接口关闭,它将使用较高的度量标准接口,因为它是唯一可用于将流量路由到该特定网络/目标的接口。
度量标准在文件/ etc / network / interfaces中指定,指向文档的链接点。
使用任何文本编辑器来编辑文件,识别网络,然后更改metric
参数并保存。重新启动是重置所有值的最简单方法,而无需了解重新启动网络服务的令人讨厌的细节。
通过处理路由指标来为一般流量确定接口优先级。每条路由具有关联的参数,例如跳数和带宽。有关route
命令,请参见手册页中的“度量”选项。
$ 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
优先通过“流量整形”解决优先访问应用程序对网络资源的问题-我将使用Web搜索引擎来查看Ubuntu或路由器是否可以做到这一点。
脚注。
在MS Windows(而非Linux)上,该netstat -nr
命令输出的信息与相同route print
。包括路由指标。
我还没有真正尝试过,但是NCD(网络配置守护程序-1)可以用于此目的。该网站声称简化了网络配置。语法似乎很简单。
#等待网络连接。通过将eth1放在eth0前面来选择它。
list(“ NET-eth1”,“ NET-eth0”)pnames;
pnames
列表实际上只是multidepend()
下一行语句的一个参数-这是实现优先级的那个。这背后的机理是,当eth1
出现时eth0
已经启动,它执行的multiprovide("NET-eth1");
,因为NET-eth1
是在眼前NET-eth0
,multidepend()
就下去了马上回来,但是从曝光的变量eth1
的过程,而不是eth0
。
这都是由于路由度量。您要删除具有最低度量标准的默认路由,然后恢复具有较高度量标准的旧路由。请遵循以下命令。
假设您的路由表如下所示:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.16.87.254 0.0.0.0 UG 100 0 0 ens38
0.0.0.0 192.168.151.2 0.0.0.0 UG 101 0 0 ens33
10.16.86.64 0.0.0.0 255.255.255.248 U 100 0 0 ens38
10.16.87.254 0.0.0.0 255.255.255.255 UH 100 0 0 ens38
10.16.88.6 10.16.87.254 255.255.255.255 UGH 100 0 0 ens38
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 ens38
192.168.151.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
现在删除默认网关
# route delete default gateway
现在恢复较旧的默认网关(请注意,这种情况下的指标比当前的默认路由101高102)
# route add default gw 10.16.87.254 metric 102 dev ens38
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.151.2 0.0.0.0 UG 101 0 0 ens33
0.0.0.0 10.16.87.254 0.0.0.0 UG 102 0 0 ens38
10.16.86.64 0.0.0.0 255.255.255.248 U 100 0 0 ens38
10.16.87.254 0.0.0.0 255.255.255.255 UH 100 0 0 ens38
10.16.88.6 10.16.87.254 255.255.255.255 UGH 100 0 0 ens38
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 ens38
192.168.151.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
Gateway
= 的条目10.16.87.254
,它是UG
最低的Metric
,而步骤2则将其返回更高的值,Metric
因此仍然可用作为备份,以防192.168.151.2
不可用。
[更新]从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
(boolean)参数设置为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)。