Tujuan
Biarkan ethernet diutamakan melalui nirkabel ketika kabel ethernet dicolokkan
metode
Setelah melakukan cukup banyak Googling dan membaca, saya sampai pada titik di mana saya percaya apa yang seharusnya saya lakukan adalah sesuatu yang sejalan dengan
nmcli connection modify [id-of-ethernet-interface] ipv4.route-metric 200
nmcli connection modify [id-of-ethernet-interface] ipv6.route-metric 200
di mana 200 adalah nilai yang lebih rendah daripada metrik nirkabel, agar ethernet diutamakan daripada nirkabel.
Hasil
Yang membingungkan saya adalah laporan yang saya dapatkan route -n
setelah saya menjalankan perintah di atas dan mem-boot ulang (untuk ukuran yang baik), dan fakta bahwa ini sepertinya tidak berarti mencapai tujuan saya
$ 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
Angka-angka bertambah sehubungan dengan eksekusi perintah saya, tetapi untuk baris yang mengatakan
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
Baris pertama memiliki 20 awalan sebelum nilai 200 yang saya atur. Ini terus diterapkan secara konsisten berdasarkan apa yang saya jalankan; Jika saya mengubah nilai metrik nmcli
menjadi 500, route -n
akan melaporkan 20500. Mengapa ini terjadi? Jelas tidak kelihatan benar, karena saya menyatakan saya ingin 200 atau 500, bukan 20200 dan 20500.
Baris kedua memiliki nilai metrik yang saya tidak tahu dari mana asalnya, dan sepertinya saya tidak bisa memengaruhi sama sekali. Jika ada yang bisa menjelaskan ini, saya bersyukur.
Itu tidak tampak seperti perintah ini berakhir dengan sesuatu yang nyata, selain memengaruhi metrik; Saya tidak tahu bahwa ethernet diutamakan, jadi saya anggap tidak.
Temuan lainnya
Apa yang saya temukan penasaran, dan tampaknya akan bekerja untuk beberapa batas, adalah penggunaan $ sudo ifmetric enp0s31f6 200
. Ini melakukan dua hingga tiga hal;
- Ini memengaruhi metrik antarmuka (
route -n
melaporkan semua baris dengan Ifaceenp0s31f6
memiliki nilai 200) - Ini mempengaruhi UI di Ubuntu (Di sudut kanan atas saya akan melihat saklar visual antara ethernet dan ikon nirkabel yang berpindah, tergantung pada nilai metrik yang saya berikan dalam
ifmetric
perintah) - Ini kadang-kadang melemparkan
NETLINK: Error: File exists
kesalahan pada saya. Eksekusi berikutnya dari perintah yang sama dapat atau tidak dapat mengakibatkan kesalahan ini
Beberapa info sistem
- EliteBook 850 G5
- Ubuntu 18.04
- Penginstalan Ubuntu dilakukan dengan membiarkan penginstal menggunakan seluruh disk, enkripsi yang diaktifkan, pengunduhan pihak ketiga yang diaktifkan untuk driver, dll.
Perbarui # 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
nmcli c show
sama denganroute -n
output?Jawaban:
Anda memiliki masalah yang bertumpuk di sini:
123.456.89.0/24
ip rules
)Mungkin Anda harus mengandalkan skrip eksternal untuk menonaktifkan wifi secara otomatis ketika ethernet dicolokkan seperti ini:
Buat skrip
/etc/NetworkManager/dispatcher.d/70-wifi-wired-exclusive.sh
. Isi:Untuk menonaktifkan skrip, jalankan saja
touch /etc/NetworkManager/.wifi-wired-exclusive
sumber
Saya percaya ini adalah NetworkManager menghukum koneksi yang dianggapnya tidak dapat dijangkau, dengan menambahkan 20000 ke nilai metrik. Dari manual NetworkManager.conf :
Solusi 1
Anda dapat mencoba menonaktifkan pemeriksaan konektivitas dengan mengomentari opsi
uri=
atau membiarkannya kosongNetworkManager.conf
.Solusi 2
Set
net.ipv4.conf.all.rp_filter = 2
di/etc/sysctl.conf
atau di mana berlaku di distro Anda. Waspadai kemungkinan kerentanan kebocoran informasi .Latar Belakang
The pengguna NetworkManager.conf memiliki penjelasan kecil tentang mengapa memeriksa konektivitas mungkin mengalami gangguan fungsi:
Di distro ketat saya difilter:
Nilai ini
1
berarti penyaringan yang ketat dan ini bertanggung jawab atas kegagalan pemeriksaan konektivitas. Orang-orang systemd mengubah ini menjadi2
(penyaringan longgar) dengan komitmen kontroversial yang memperkenalkan kerentanan , dengan demikian dikembalikan oleh distro.sumber