Distribusi Linux terkini gunakan NetworkManager untuk membuat dan mengelola koneksi jaringan. Itu berarti saya perlu memahaminya sebagai administrator sistem. Dalam serangkaian artikel, saya akan membagikan apa yang telah saya pelajari hingga saat ini dan mengapa menurut saya NetworkManager merupakan peningkatan dari opsi sebelumnya.
Red Hat memperkenalkan NetworkManager pada tahun 2004 untuk menyederhanakan dan mengotomatisasi konfigurasi dan koneksi jaringan, terutama koneksi nirkabel. Tujuannya adalah untuk membebaskan pengguna dari tugas mengkonfigurasi secara manual setiap jaringan nirkabel baru sebelum menggunakannya. NetworkManager dapat mengelola koneksi jaringan kabel tanpa file konfigurasi antarmuka, meskipun menggunakan file koneksi jaringan untuk koneksi nirkabel.
Pada artikel ini, saya akan mengulas apa itu NetworkManager dan bagaimana menggunakannya untuk melihat koneksi jaringan dan perangkat untuk host Linux. Saya bahkan akan memecahkan beberapa masalah dalam prosesnya.
Yang diganti NetworkManager
NetworkManager adalah pengganti alat manajemen jaringan sebelumnya. Perintah konfigurasi antarmuka asli, ifconfig
, dan file konfigurasi antarmukanya sudah usang. Anda dapat melihat ini di ifconfig
halaman manual, yang berisi catatan yang menyatakan hal itu.
ip
perintah menggantikan ifconfig
perintah dan melakukan tugas yang pada dasarnya sama. Kedua perintah telah hidup berdampingan untuk beberapa waktu sekarang, memungkinkan Sysadmin untuk menggunakan salah satunya, yang membuat skrip bergantung pada ifconfig
fungsional. Meskipun halaman manualnya belum menunjukkannya, ifconfig
perintah sudah usang, dan NetworkManager telah membuatnya dalam praktik.
Sekarang saatnya untuk menulis ulang skrip tersebut, karena menggunakan perintah NetworkManager adalah yang paling masuk akal.
Cara kerja NetworkManager
NetworkManager dijalankan sebagai layanan systemd dan diaktifkan secara default. NetworkManager bekerja dengan D-Bus untuk mendeteksi dan mengkonfigurasi antarmuka jaringan saat mereka terhubung ke komputer Linux. Manajemen antarmuka jaringan plug-and-play ini membuat penyambungan ke jaringan baru—baik berkabel maupun nirkabel—sangat mudah bagi pengguna. Ketika antarmuka jaringan yang diinstal sebelumnya terdeteksi selama startup Linux, mereka diperlakukan persis seperti perangkat yang dicolokkan setelah sistem sudah aktif dan berjalan. Memperlakukan semua perangkat sebagai plug-and-play di setiap instance membuat penanganan perangkat tersebut lebih mudah untuk sistem operasi, karena hanya ada satu basis kode untuk menangani kedua rangkaian keadaan.
Daemon udev membuat entri untuk setiap kartu antarmuka jaringan (NIC) yang dipasang di sistem dalam file aturan jaringan. D-Bus memberi sinyal keberadaan perangkat jaringan baru—berkabel atau nirkabel—ke NetworkManager. NetworkManager kemudian mendengarkan lalu lintas di D-Bus dan merespons dengan membuat konfigurasi untuk perangkat baru ini. Konfigurasi seperti itu, secara default, hanya disimpan dalam RAM dan tidak permanen. Itu harus dibuat setiap kali komputer di-boot.
NetworkManager menggunakan informasi dari D-Bus untuk menginisialisasi setiap NIC. Pertama-tama mencari file konfigurasi yang menyediakan konfigurasi statis yang lebih permanen. Saat diberitahu tentang perangkat baru, NetworkManager memeriksa keberadaan file konfigurasi antarmuka jaringan lama (ifcfg-*
) di /etc/sysconfig/network-scripts
. Plugin ifcfg-rh memungkinkan penggunaan file lama ini untuk kompatibilitas mundur.
Selanjutnya, NetworkManager mencari file koneksi antarmukanya sendiri, yang terletak di /etc/NetworkManager/system-connections
direktori. Sebagian besar distribusi, termasuk Fedora, menyimpan file koneksi jaringannya di /etc/NetworkManager/system-connections
direktori, menggunakan nama jaringan sebagai nama file.
Misalnya, laptop System76 Oryx Pro saya awalnya menggunakan POP!_OS
. Saya telah mengganti ini dengan Fedora, yang saat ini pada rilis 35, dan setiap koneksi nirkabel yang saya buat dengannya memiliki file di /etc/NetworkManager/system-connections
. Ini memelihara catatan service set identifier (SSID) dan kata sandi nirkabel untuk setiap jaringan. Server Protokol Konfigurasi Host Dinamis (DHCP) di perute nirkabel menyediakan data konfigurasi jaringan lainnya untuk koneksi nirkabel ini. Untuk tujuan keamanan, karena file ini berisi kata sandi, file tersebut hanya dapat dibaca/ditulis oleh pengguna root, sama seperti file akun sistem /etc/passwd
dan /etc/shadow
.
/etc/NetworkManager/system-connections directory
di laptop itu terdapat file untuk jaringan kabel serta setiap jaringan nirkabel yang saya sambungkan. Struktur file-file ini berbeda dari ifcfg
yang lama file, tetapi dalam format teks biasa ASCII dan dapat dibaca serta dipahami dengan mudah.
Proses ini sensitif terhadap urutan. Kumpulan file konfigurasi pertama yang ditemukan digunakan. Jika tidak ada file konfigurasi yang ditemukan, NetworkManager membuat konfigurasi menggunakan data dari server DHCP. Jika file konfigurasi antarmuka tidak ada, mencolokkan perangkat baru atau menghubungkan dengan jaringan nirkabel baru menyebabkan udev memberi tahu NetworkManager tentang perangkat baru atau koneksi nirkabel. Di Fedora hingga rilis 28, NetworkManager membuat file konfigurasi antarmuka baru. Dimulai dengan Fedora 29 dan yang lebih tinggi, NetworkManager hanya membuat koneksi dan tidak membuat file konfigurasi antarmuka.
Jika tidak ada file konfigurasi atau server DHCP yang ditemukan, tidak ada koneksi jaringan yang memungkinkan.
Melihat konfigurasi antarmuka
Program antarmuka baris perintah NetworkManager, nmcli, menyediakan beberapa opsi untuk menentukan status terkini dari setiap perangkat keras antarmuka jaringan yang terpasang di host serta koneksi yang sedang aktif. Program nmcli dapat mengelola jaringan pada host mana pun, apakah menggunakan antarmuka pengguna grafis (GUI) atau tidak, sehingga program ini juga dapat mengelola host jarak jauh melalui koneksi shell aman (SSH). Ini berfungsi pada koneksi kabel dan nirkabel.
Saya akan mulai dengan beberapa informasi dasar untuk menggunakan alat nmcli. Saya menggunakan sistem Fedora yang telah saya siapkan sebagai router, karena contoh dengan beberapa antarmuka jaringan akan lebih menarik daripada host stasiun kerja sederhana dengan hanya satu antarmuka.
Saya akan mulai dengan perintah termudah, nmcli
tanpa pilihan. Perintah sederhana ini menunjukkan informasi yang mirip dengan ifconfig
yang sekarang sudah usang perintah, termasuk nama dan model NIC, alamat kontrol akses media (MAC) dan alamat IP (protokol internet), dan NIC mana yang dikonfigurasi sebagai gateway default. Ini juga menunjukkan konfigurasi DNS untuk setiap antarmuka.
Perintah nmcli membutuhkan hak admin. Sebagian besar distribusi menyarankan Anda menggunakan sudo
tapi saya hanya beralih ke root
pengguna.
$ su -
# nmcli
enp4s0:terhubung ke enp4s0
"Realtek RTL8111/8168/8411"
ethernet (r8169), 84:16:F9:04:44:03, hw, mtu 1500
ip4 default, ip6 default
inet4 45.20.209.41/29
route4 0.0.0.0/0
route4 45/29
inet6 2600:1700:7c0:860:8616:f9ff:fe04:4403/64
inet6 fe80::8616:f9ff:fe04:4403/64
route6 2600:1700:7c0:860::/64
route6 ::/0
enp1s0:terhubung ke enp1s0
"Realtek RTL8111/8168/8411"
ethernet (r8169), 84:16:F9 :03:E9:89, hw, mtu 1500
inet4 192.168.10.1/24
route4 192.168.10.0/24
inet6 fe80::8616:f9ff:fe03:e989/64
route6 fe80::/64
enp2s0:terhubung ke enp2s0
"Realtek RTL8111/8168/8411"
ethernet (r8169), 84:16:F9:03:FD:85, hw, mtu 1500
inet4 192.168.0.254/24
route4 192.168.0.0/24
inet 6 fe80::8616:f9ff:fe03:fd85/64
route6 fe80::/64
eno1:unavailable
"Intel I219-V"
ethernet ( e1000e), 04:D9:F5:1C:D5:C5, hw, mtu 1500
lo:unmanaged
"lo"
loopback (tidak diketahui), 00:00:00:00:00:00, sw, mtu 65536
Konfigurasi DNS:
server:192.168.0.52 8.8.8.8 8.8.4.4
antarmuka:enp4s0
server:192.168.0.52 8.8.8.8
antarmuka:enp1s0
server:192.168.0.52 8.8.8.8
antarmuka:enp2s0
Gunakan perintah nmcli device show
untuk mendapatkan informasi lengkap tentang perangkat yang dikenal dan nmcli connection show
untuk mendapatkan gambaran umum tentang profil koneksi aktif. Lihat halaman manual nmcli(1) dan nmcli-examples(7) untuk detail penggunaan yang lengkap. Anda juga dapat mengeluarkan perintah bantuan, nmcli -h
, sebagai pengguna root untuk melihat nmcli
tingkat atas dasar perintah:
# nmcli -h
Penggunaan:nmcli [OPTIONS] OBJECT { COMMAND | help }
OPSI
-a, --ask minta parameter yang hilang
-c, --colors auto|yes|no apakah akan menggunakan warna dalam keluaran -e, --escape yes|no escape kolom pemisah dalam nilai
-f, --fields|all|common tentukan bidang yang akan dihasilkan
-g, --get- values |all|common shortcut for -m tabular -t -f
-h, --help cetak bantuan ini
-m, --mode tabular|multiline mode keluaran < BR /> -O, - Overview Overview Mode
-P, - Keluaran cantik
-s, - Rahasia-Rahasia memungkinkan menampilkan kata sandi
-t, --terse terse output
-v, --version tampilkan versi program
-w, --tunggusetel waktu tunggu untuk menyelesaikan operasi
OBJECT [ eneral /> Status umum dan operasi NetworkManager
n[networking] kontrol jaringan secara keseluruhan
r[adio] switch radio NetworkManager
c[onnection] koneksi NetworkManager
d[evice] < perangkat br /> a[gent] Agen rahasia NetworkManager atau agen polkit
m[onitor] pantau perubahan NetworkManager
Perhatikan bahwa objek dapat dieja atau disingkat menjadi karakter pertama. Objek-objek ini semuanya unik, jadi hanya karakter pertama yang diperlukan untuk menentukan objek tunggal apa pun.
Coba nmcli g
untuk melihat status umum.
# nmcli g
STATE CONNEKTIVITAS WIFI-HW WIFI WWAN-HW WWAN
terhubung penuh enabled enabled enabled enabled
Output itu tidak terlalu terlihat. Saya juga tahu bahwa tuan rumah, dalam hal ini, tidak memiliki perangkat keras WiFi, jadi ini adalah hasil yang menyesatkan. Anda tidak boleh menggunakan nmcli g
perintah untuk alasan itu. Perintah objek yang lebih baik adalah c
[koneksi] dan d
[evice], yang paling sering saya gunakan.
# nmcli c.
nama uuid perangkat Enp2s0 8C6FD7B1-AB62-A383-5B96-46E083E04BB1 Ethernet Enp2s0
Enp0S20F0U7 0F5427BB-F8B1-5D51-8F74-AC246B0B00C5 Ethernet -
ENP1S0 ABF4C85B-57CC-4484-4FA9-B4A71689C359 Ethernet -
# nmcli d
koneksi status jenis perangkat ENP4S0 terhubung ENP4S0
ENP1S0 Ethernet terhubung ENP1S0
ENP2S0 Ethernet Connect Enp2S0
ENO1 Ethernet Tidak Tersedia -
/>lo loopback tidak terkelola --
Ada banyak informasi yang sangat menarik di sini. Perhatikan bahwa dua entri terakhir menggunakan c
perintah objek tidak memiliki entri di kolom perangkat. Hasil ini dapat berarti bahwa mereka tidak aktif atau tidak ada atau ada satu atau beberapa kesalahan konfigurasi.
Informasi tambahan yang kami dapatkan menggunakan d
perintah objek bahkan tidak menunjukkan perangkat enp0s20f0u7. Ini juga menunjukkan perangkat eno1 (perangkat motherboard), yang tidak ditampilkan menggunakan c
perintah objek.
Output Anda akan terlihat lebih seperti ini, meskipun nama perangkat akan berbeda, dan itu akan tergantung pada lokasi spesifik pada bus PCI tempat NIC terhubung.
# NMCLI C
Perangkat Jenis UUID
Koneksi Kabel 1 6E6F63B9-6D9E-3D13-A3CD-D54B4CA2C3D2 Ethernet Enp0S3
# NMCLI D
Koneksi Negara Jenis
enp0s3 ethernet connected Koneksi kabel 1
lo loopback unmanaged --
Sepertinya saya memiliki beberapa anomali untuk dijelajahi. Pertama, saya ingin tahu perangkat apa enp0s20f0u7 dalam daftar koneksi. Karena NetworkManager tidak mengenali perangkat ini dalam daftar perangkat, mungkin ada file konfigurasi jaringan di /etc/sysconfig/network-scripts
meskipun tidak ada perangkat keras seperti itu di host. Saya memeriksa direktori itu, menemukan file konfigurasi antarmuka, dan menampilkan isinya.
# ls -l
total 20
-rw-r--r-- 1 root root 352 Jan 2 2021 ifcfg-eno1
-rw-r--r-- 1 root root 419 Jan 5 2021 ifcfg-enp0s20f0u7
-rw-r--r-- 1 root root 381 Jan 11 2021 ifcfg-enp1s0
-rw-r--r-- 1 root root 507 Jul 27 2020 ifcfg-enp2s0
-rw-r--r-- 1 root root 453 Jul 27 2020 ifcfg-enp4s0
cat ifcfg-enp0s20f0u7
# File konfigurasi antarmuka untuk ifcfg -enp0s20f0u7
# Ini adalah dongle USB Gb Ethernet
# Antarmuka ini untuk router nirkabel
# Benar per 20210105
TYPE="Ethernet"
BOOTPROTO="statis"
NM_CONTROLLED="ya"
DEFROUTE="tidak"
NAME=enp0s20f0u7
UUID="fa2117dd-6c7a-44e0-9c9d-9c662716a352"
ONBOOT ="ya"
HWADDR=8c:ae:4c:ff:8b:3a
IPADDR=192.168.10.1
PREFIX=24
DNS1=192.168.0.52
DNS2=8.8.8.8
Setelah melihat file ini, saya ingat bahwa saya telah menggunakan dongle USB Gigabit untuk sementara waktu karena NIC motherboard yang diinstal pada host tersebut ternyata gagal. Itu adalah perbaikan cepat, dan saya kemudian menginstal NIC baru pada bus motherboard PCIe, sehingga saya dapat menghapus file konfigurasi antarmuka ini. Saya tidak menghapusnya, namun; Saya memindahkannya ke /root
direktori jika saya membutuhkannya lagi.
Perhatikan komentar yang saya gunakan untuk memastikan bahwa diri saya di masa depan atau administrator sistem lain akan memiliki pemahaman tentang mengapa file ini ada.
Anomali kedua adalah mengapa entri untuk enp1s0 muncul dua kali. Ini hanya dapat terjadi ketika nama NIC ditentukan di lebih dari satu file konfigurasi antarmuka. Jadi saya mencoba langkah-langkah berikut, dan benar saja, enp1s0 salah muncul di ifcfg-eno1
file konfigurasi serta ifcfg-enp1s0
berkas.
# grep enp1s0 *
ifcfg-eno1:NAME=enp1s0
ifcfg-enp1s0:# File konfigurasi antarmuka untuk enp1s0 / 192.168.10.1
ifcfg-enp1s0:NAME=enp1s0
# cat ifcfg-eno1
## File konfigurasi antarmuka untuk eno1 / 192.168.10.1
## Antarmuka ini untuk router nirkabel
## Benar per 20200727
TYPE="Ethernet"
BOOTPROTO="static"
NM_CONTROLLED="yes"
DEFROUTE="no"
NAME=enp1s0
ONBOOT="yes"
HWADDR=04:d9:f5:1c:d5:c5
IPADDR=192.168.10.1
PREFIX=24
DNS1=192.168.0.52
DNS2=8.8. 8.8
Saya mengubah NAME menjadi NAME=eno1 dan memulai ulang NetworkManager. Perubahan dalam file konfigurasi antarmuka tidak diaktifkan sampai saya me-restart NetworkManager. Hasil perangkat dan koneksi sekarang terlihat seperti ini. Saya masih tidak menggunakan NIC onboard, yang mungkin baik-baik saja sekarang karena saya telah menghapus nama yang salah dari ifcfg-eno1
file konfigurasi antarmuka. Itu akan membutuhkan waktu henti untuk router itu.
# SystemCtl Restart NetworkManager
# nmcli d /> Perangkat Jenis Koneksi Negara
ENP4S0 Ethernet Connects0
ENP1S0 Ethernet Hubungkan Enp1s0
ENP2S0 Ethernet Connects0
ENO1 Ethernet Tidak Tersedia -
Lo Loopback Unmanaged -
# nmcli c Perangkat Jenis UUID
ENP4S0 B325FD44-30B3-C744-3FC9-E154B78E8C82 Ethernet ENP4S0
ENP1S0 c0ab6b8c-0eac-a1b4-1c47-efe4b2d1191f ethernet enp1s0
enp2s0 8c6fd7b1-ab62-a383-5b96-46e083e04bb1 ethernet enp2s0
enolPilihan lainnya adalah hanya menampilkan koneksi yang aktif. Ini adalah pilihan yang baik dengan hasil yang bersih, tetapi juga dapat menutupi masalah lain jika Anda menggunakannya secara eksklusif.
# nmcli koneksi show -active
nama uuid Perangkat
enp2s0 8c6fd7b1-ab62-a383-5b96-46e083e04bb1 ethernet enp2s0Setelah mengubah nama perangkat di
ifcfg-eno1
file ke yang benar, saya menduga bahwa NIC motherboard, eno1, akan bekerja kembali. Saya akan bereksperimen dengan itu saat berikutnya saya mengadakan sesi pemeliharaan di host tersebut.Bukankah itu lebih menarik daripada sebuah host dengan satu NIC? Dan saya menemukan beberapa masalah dalam prosesnya.
Menggunakan alat NetworkManager untuk mengelola jaringan tercakup dalam dokumen Red Hat Enterprise Linux (RHEL) 8 "Mengonfigurasi dan Mengelola Jaringan."
Pemikiran terakhir
Saya penggemar filosofi "jika tidak rusak, jangan perbaiki". Namun, bahkan penggunaan NetworkManager yang paling sederhana dari baris perintah, melihat status perangkat jaringan dan koneksi saat ini, telah menunjukkan kepada saya dua anomali dalam konfigurasi saya sebelumnya yang saya lewatkan. Saya sekarang penggemar NetworkManager. Alat yang lebih lama bagus, tetapi NetworkManager lebih baik; informasi tambahan yang diberikannya sangat berharga.
Di bagian 2 seri ini, saya akan membahas pengelolaan antarmuka jaringan.
Bagaimana Linux menyelamatkan komputer yang lambat (dan planet ini) Bagaimana saya memindai foto keluarga di LinuxLinux