ターゲット
イーサネットケーブルを接続するときは、ワイヤレスよりイーサネットに優先順位を付けてください。
方法
多くのインターネット検索と読書の最後に、次のポイントに達しました。信じる私がしなければならないことは次のとおりです
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
答え2
これは、メトリックに20000を追加してアクセスできないと見なす接続にペナルティを与えるNetworkManagerだと思います。 ~からNetworkManager.conf マニュアル:
グローバル接続のないデバイスのデフォルトルートは、ルート指標+20000でペナルティを受けます。
ソリューション1
オプションにコメントを付けるか、空白のままにuri=
して接続確認を無効にできますNetworkManager.conf
。
ソリューション2
net.ipv4.conf.all.rp_filter = 2
に設定します/etc/sysctl.conf
。気をつける情報漏えいの脆弱性がある可能性があります。
背景
これNetworkManager.conf マニュアル接続確認が失敗する可能性がある理由の簡単な説明があります。
ディストリビューションで/proc/sys/net/ipv4/conf/*/rp_filterが次のように設定されている可能性があります。厳格なフィルタリング。 SO_BINDDEVICE を使用してすべてのデバイスに要求を送信するデバイス固有の接続確認には正しく機能しません。厳密なrp_filter設定はすべての応答を拒否し、最良のパスを除くすべての接続確認に失敗します。
私のディストリビューションでは厳密なフィルタリングが有効になっています。
$ /usr/sbin/sysctl net.ipv4.conf.all.rp_filter
net.ipv4.conf.all.rp_filter = 1
価値は1
意味する厳格なフィルタリングこれが接続確認に失敗する理由です。システムの人々はそれを2
(緩いフィルタリング)に変更しました。議論の余地のある提出紹介した抜け穴したがって、ディストリビューションによって復元されます。