これは、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はインターフェイスに使用するメトリック値をどのように決定するのですか?
解決策の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とネットワークサービスを再起動します。