永久更改接口的度量

Mat*_*Mis 7 networking routing

这是我通过 USB 将 Android 手机连接到 Raspberry 并启用 USB 网络共享时的路由表。

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.42.129  0.0.0.0         UG    204    0        0 usb0
0.0.0.0         192.168.0.1     0.0.0.0         UG    303    0        0 wlan0
192.168.0.0     0.0.0.0         255.255.255.0   U     303    0        0 wlan0
192.168.42.0    0.0.0.0         255.255.255.0   U     204    0        0 usb0
Run Code Online (Sandbox Code Playgroud)

我想wlan0成为首选界面。那么如何永久更改一个接口的指标呢?

此外,Linux 如何决定它将用于接口的度量值?

小智 10

解决方案之一是在/etc/network/interfaces添加具有预定义度量的默认路由时配置设置:

auto lo
iface lo inet loopback

# Primary interface
auto wlan0
iface wlan0 inet static 
    address 192.168.0.100
    netmask 255.255.255.0 
    dns-nameservers 192.168.0.1 8.8.8.8
    post-up /sbin/ip route add default via 192.168.0.1 dev wlan0 metric 10
    post-down /sbin/ip route del default via 192.168.0.1 dev wlan0 metric 10
    wpa-ssid <your_SSID>
    wpa-psk <your_PSK>
Run Code Online (Sandbox Code Playgroud)

也许,您需要添加另一个特定于您的设置的 Wi-Fi 选项。


另一种解决方案是更改/etc/dhcpcd.conf. 根据dhcpcd 手动度量可以分配给接口:

metric
         Metrics are used to prefer an interface over another one, lowest
         wins.  dhcpcd will supply a default metric of 200 +
         if_nametoindex(3).  An extra 100 will be added for wireless
         interfaces. 
Run Code Online (Sandbox Code Playgroud)

将这些行添加到/etc/dhcpcd.conf

interface wlan0
metric 200

interface usb0
metric 300
Run Code Online (Sandbox Code Playgroud)

并重新启动 dhcpcd 和网络服务。