web-dev-qa-db-ja.com

インターフェースのメトリックを永続的に変更する

これは、Android電話をUSB経由で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

が欲しいです wlan0を優先インターフェースにします。それでは、インターフェイスのメトリックを永続的に変更するにはどうすればよいですか?

また、Linuxはインターフェイスに使用するメトリック値をどのように決定するのですか?

5
MatMis

解決策の1つは、/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>

おそらく、設定に固有の別のWi-Fiオプションを追加する必要があります。


別の解決策は、/etc/dhcpcd.confのメトリックを変更することです。 dhcpcd manual メトリックによれば、メトリックをインターフェイスに割り当てることができます。

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. 

これらの行を/etc/dhcpcd.confに追加します。

interface wlan0
metric 200

interface usb0
metric 300

そして、dhcpcdとネットワークサービスを再起動します。

6
Gnat