ターゲット
イーサネットケーブルを接続するときは、ワイヤレスよりイーサネットに優先順位を付けてください。
方法
多くのインターネット検索と読書の最後に、次のポイントに達しました。信じる私がしなければならないことは次のとおりです
nmcli connection modify [id-of-ethernet-interface] ipv4.route-metric 200
nmcli connection modify [id-of-ethernet-interface] ipv6.route-metric 200
ここで、200は、無線よりイーサネットに優先順位を与えるための無線メトリックより低い値である。
結果
私を混乱させることは、上記のコマンドを実行して再起動した後(良い測定のために)得られたレポートroute -n
とこれが私の目標を達成できないようです。
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 123.456.89.1 0.0.0.0 UG 600 0 0 wlp1s0
0.0.0.0 123.456.89.1 0.0.0.0 UG 20200 0 0 enp0s31f6
123.456.89.0 0.0.0.0 255.255.255.192 U 200 0 0 enp0s31f6
123.456.89.0 0.0.0.0 255.255.255.192 U 600 0 0 wlp1s0
654.321.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s31f6
この数は私のコマンドの実行に関連していますが、
0.0.0.0 123.456.89.1 0.0.0.0 UG 20200 0 0 enp0s31f6
654.321.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s31f6
最初の行には、私が設定した200値の前に20のプレフィックスがあります。実行中の項目に基づいて指標値をnmcli
500に変更すると、route -n
20500が報告されます。なぜこれが起こるのですか? 20200や20500ではなく、200や500が欲しいと言ったので間違っているようです。
2行目には測定値があり、その値がどこから来たのか全くわからないし、まったく影響を及ぼすことができないようです。誰もがこれについて明らかにすることができれば幸いです。
これらのコマンドは、影響指標以外には実質的な結果を生成しないようです。イーサネットが優先順位かどうかわからないので、そうでないと仮定します。
その他の結果
気になって作業していると思います。一部程度は用途です$ sudo ifmetric enp0s31f6 200
。これは二つか三つのことをします。
- インターフェイスのメトリックに影響します(
route -n
Ifaceがあるすべての行の200値を報告しますenp0s31f6
)。 - これはUbuntuのUIに影響します(右上隅には、コマンドに提供された指標の値に応じて、イーサネットとワイヤレスアイコンの間の視覚的な切り替えが表示されます
ifmetric
)。 - それ時々
NETLINK: Error: File exists
私にエラーが発生します。同じコマンドの後続実行可能または可能このエラーは発生しません
一部のシステム情報
- エリートノートブック850 G5
- Ubuntu18.04
- Ubuntuのインストールは、インストーラがディスク全体を使用し、暗号化を有効にし、サードパーティのドライバのダウンロードを有効にするなどの方法で行われます。
アップデート#1
$ nmcli c show
NAME UUID TYPE DEVICE
Wired connection 2 [n/a] ethernet enp0s31f6
WiFi1 [n/a] wifi wlp1s0
$ route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 [n/a] 0.0.0.0 UG 600 0 0 wlp1s0
0.0.0.0 [n/a] 0.0.0.0 UG 20200 0 0 enp0s31f6
[n/a] 0.0.0.0 255.255.255.192 U 200 0 0 enp0s31f6
[n/a] 0.0.0.0 255.255.255.192 U 600 0 0 wlp1s0
[n/a] 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s31f6
ベストアンサー1
ここに多くの質問があります。
- 有線LANと無線LANは同じサブネットのブリッジです。
123.456.89.0/24
- これらのネットワークに同時に接続すると、2つのデフォルトゲートウェイが発生します(これはいくつかの高度なルーティングで解決可能です
ip rules
)。 - Wi-Fiと有線接続の間にブリッジがあるため、これらのゲートウェイのアドレスは同じです。
イーサネットに接続したときにWi-Fiを自動的に無効にするには、次のように外部スクリプトを使用する必要があります。
スクリプトを作成します/etc/NetworkManager/dispatcher.d/70-wifi-wired-exclusive.sh
。コンテンツ:
#!/usr/bin/env bash
name_tag="wifi-wired-exclusive"
syslog_tag="$name_tag"
skip_filename="/etc/NetworkManager/.$name_tag"
if [ -f "$skip_filename" ]; then
exit 0
fi
interface="$1"
iface_mode="$2"
iface_type=$(nmcli dev | grep "$interface" | tr -s ' ' | cut -d' ' -f2)
iface_state=$(nmcli dev | grep "$interface" | tr -s ' ' | cut -d' ' -f3)
logger -i -t "$syslog_tag" "Interface: $interface = $iface_state ($iface_type) is $iface_mode"
enable_wifi() {
logger -i -t "$syslog_tag" "Interface $interface ($iface_type) is down, enabling wifi ..."
nmcli radio wifi on
}
disable_wifi() {
logger -i -t "$syslog_tag" "Disabling wifi, ethernet connection detected."
nmcli radio wifi off
}
if [ "$iface_type" = "ethernet" ] && [ "$iface_mode" = "down" ]; then
enable_wifi
elif [ "$iface_type" = "ethernet" ] && [ "$iface_mode" = "up" ] && [ "$iface_state" = "connected" ]; then
disable_wifi
fi
スクリプトを無効にするには、次を実行します。touch /etc/NetworkManager/.wifi-wired-exclusive