GNU/Linux >> Belajar Linux >  >> Linux

5 perintah pemecahan masalah jaringan Linux

Konfigurasi jaringan dan pemecahan masalah adalah tugas penting yang harus dilakukan sysadmin secara teratur. Beberapa tugas ini bisa jadi menantang. Namun, saat menangani masalah konektivitas, menggunakan alat yang tepat akan membantu Anda mencapai hasil dengan cara yang lebih cepat dan konsisten.

Perintah ip

ip command adalah utilitas serba guna untuk menampilkan dan memanipulasi objek jaringan di sistem Linux Anda, termasuk alamat IP, rute, dan tabel ARP. Ini adalah alat yang berguna untuk mengonfigurasi jaringan, serta untuk memecahkan masalah konektivitas jaringan.

ip command menggantikan fungsionalitas dari banyak perintah yang disediakan dengan net-tools yang lama paket seperti ifconfig , rute , dan arp , tetapi menambahkan banyak fitur lainnya.

Dalam bentuk paling dasar, Anda cukup menjalankan ip dan menyediakan objek jaringan untuk dimanipulasi, seperti alamat, tautan, atau rute, dan subperintah untuk melakukan suatu tindakan. Jika Anda tidak memberikan subperintah, banyak objek default ke show subperintah untuk menampilkan informasi yang terkait dengan objek tersebut.

Berikut sintaks dasarnya:

ip  [COMMAND]  

Misalnya, untuk melihat status tautan di semua perangkat jaringan, jalankan ip link show :

$ ip link1:lo: mtu 65536 status noqueue qdisc mode UNKNOWN default grup DEFAULT qlen 1000    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:002:enp1s0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000    link/ether 52:54:00:b5:c7:2b brd ff:ff:ff:ff:ff:ff 

Karena tampilkan adalah sub-perintah default, Anda juga dapat memperoleh hasil yang sama dengan menjalankan ip link atau bahkan ip l (banyak objek mengenali singkatan).

ip perintah mengelola banyak objek. Yang utama adalah:

  • tautan atau l - mengontrol status perangkat jaringan
  • alamat atau a - memanipulasi alamat IP pada perangkat
  • rute atau r - menangani entri tabel perutean
  • tetangga atau n - mengontrol entri tabel ARP

Anda dapat melihat daftar lengkap objek dan perintah dengan menjalankan ip help .

Beberapa contoh perintah ip yang berguna

Tampilkan statistik jaringan -s dalam format yang dapat dibaca manusia -h untuk antarmuka jaringan tertentu:

$ ip -s -h l show dev enp1s02:enp1s0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000    link/ether 52:54:00:b5:C7:2B BRD FF:FF:FF:FF:FF:FF RX:Bytes Paket Kesalahan Diturunkan Overrun Mcast 820m 303k 0 182k 0 0 TX:Paket Bytes Kesalahan DROPPED CARRIER COLLSNS 19.9m 60.9K 0 0 0  

Tampilkan alamat IP semua antarmuka:

$ ip a1:lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    inet 127.0.0.1/8 scope host lo       valid_lft forever prefer_lft forever    inet6 ::1/128 scope host        valid_lft forever prefer_lft forever2:enp1s0: mtu 1500 qdisc state fUPq_ default group qlen 1000    link/ether 52:54:00:b5:c7:2b brd ff:ff:ff:ff:ff:ff    inet 192.168.122.169/24 brd 192.168.122.255 scope global noprefixroute enp1s0       valid_lft forever prefer_lft forever   7ecf:5cc8:5c1f:1009/64 scope link noprefixroute        valid_lft forever prefert_lft forever 

Tampilkan alamat IP dari satu antarmuka, mis., enp1s0 :

$ ip a show dev enp1s0 

Tambahkan alamat IP lain ke antarmuka (memerlukan sudo atau root pengguna):

$ sudo ip a change 192.168.122.170 dev enp1s0 

Tampilkan tabel perutean:

$ ip routedefault melalui 192.168.122.1 dev enp1s0 proto metrik statis 100 192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.169 metrik 100 

Tambahkan rute (gerbang default):

$ Sudo ip route tambahkan default melalui 192.168.122.1 dev enp1s0 

ip command adalah antarmuka tingkat rendah untuk mengonfigurasi opsi jaringan di sistem Linux Anda. Meskipun berguna sebagai alat pemecahan masalah, mungkin lebih sulit untuk mengatur jaringan dengannya. Untuk alasan ini, banyak distribusi menyediakan antarmuka tingkat yang lebih tinggi untuk menyelesaikan tugas yang sama. Selanjutnya, mari kita lihat alat konfigurasi Network Manager nmcli , yang menyediakan cara terintegrasi untuk mengonfigurasi jaringan.

Alat nmcli

Network Manager adalah aplikasi konfigurasi jaringan yang tersedia secara default dengan banyak distribusi Linux, termasuk RHEL dan Fedora. Network Manager berjalan sebagai daemon, dan tujuannya adalah menyediakan antarmuka tingkat tinggi untuk membuat konfigurasi jaringan lebih mudah dan lebih otomatis.

Pengguna Linux desktop atau server dengan antarmuka grafis biasanya menggunakan klien GUI Manajer Jaringan untuk mengonfigurasi jaringan. Untuk kasus di mana Anda bekerja dengan server tanpa kepala atau jika Anda ingin mengotomatiskan konfigurasi melalui skrip shell, nmcli alat sangat berguna.

Manajer Jaringan dan nmcli adalah kombinasi serbaguna yang memungkinkan Anda memverifikasi dan mengonfigurasi banyak opsi jaringan. Sintaks dasar untuk nmcli adalah:

nmcli  [COMMAND] [ARGUMENTS]  

Objek yang paling umum adalah:

  • umum - menunjukkan status dan izin Pengelola Jaringan
  • jaringan - menampilkan, mengaktifkan, dan menonaktifkan jaringan
  • radio - menampilkan, mengaktifkan, dan menonaktifkan WiFi dan WWAN
  • perangkat - menunjukkan dan memanipulasi status perangkat jaringan
  • koneksi - mengelola profil koneksi Pengelola Jaringan

Tidak mungkin untuk menutupi semua opsi pada satu posting blog. Mari kita periksa beberapa contoh cara menggunakan nmcli untuk tugas konfigurasi jaringan umum. Untuk contoh lainnya, lihat halaman nmcli-examples resmi atau halaman manual dengan man nmcli-examples .

Periksa status perangkat jaringan:

$ nmcli device statusDEVICE  TYPE      STATE      CONNECTION enp1s0  ethernet  connected  enp1s0enp7s0  ethernet  disconnected  --lo      loopback  unmanaged  -- 

Tampilkan semua profil koneksi:

$ nmcli con show NAME    UUID                                  TYPE      DEVICE enp1s0  1bb35a4a-ad02-4cad-978a-4a ea9527cb  

Tampilkan detail tentang koneksi tertentu (mis., enp1s0 ):

$ koneksi nmcli tampilkan enp1s0  

Ambil parameter tertentu dari koneksi (misalnya, alamat IP dan DNS):

$ nmcli -g ip4.address, koneksi ip4.dns tampilkan enp1s0192.168.122.169/24192.168.122.1 

Ubah parameter koneksi, misalnya, beralih dari DHCP ke koneksi manual:

$ sudo nmcli con mod enp1s0 ipv4.method manual ipv4.addresses 192.168.122.169/24 ipv4.dns 192.168.122.1 ipv4.gateway 192.168.122.1 

Mulai ulang koneksi untuk mengaktifkan opsi baru:

$ sudo nmcli con down enp1s0$ sudo nmcli con up enp1s0 

Tambahkan profil koneksi baru:

$ Sudo koneksi nmcli tambahkan con-name enp7s0 ifname enp7s0 ketik ethernet ip4 192.168.64.88/24  

nmcli juga memungkinkan Anda untuk mengedit profil koneksi secara interaktif. Antarmuka ini memberikan bantuan dan pelengkapan otomatis melalui Tab kunci, yang memandu Anda melalui banyak pilihan yang tersedia. Aktifkan editor menggunakan koneksi nmcli edit CONNECTION-NAME :

$ sudo koneksi nmcli edit enp7s0 ===| editor koneksi interaktif nmcli |===Mengedit koneksi '802-3-ethernet' yang ada:'enp7s0'Ketik 'bantuan' atau '?' untuk perintah yang tersedia. Ketik 'print' untuk menampilkan semua properti koneksi. Ketik 'describe [.
]' untuk deskripsi properti detail. Anda dapat mengedit pengaturan berikut:connection, 802-3-ethernet (ethernet) , 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy. 


Di editor, Anda dapat menentukan parameter tertentu dengan set memerintah. Gunakan Tab pelengkapan otomatis kunci untuk melihat semua opsi yang tersedia:

nmcli> Set IPv4. alamat dhcp-hostname dhcp-timeout dns-search may-fail routesdad-timeout dhcp-hostname-flag DNS Metode gateway rute-tabledhcp-client-id DHCP-IID DNS -options          ignore-auto-dns      never-default        routing-rulesdhcp-fqdn            dhcp-send-hostname   dns-priority         abaikan route-cli-auto-routes .

Kemudian Anda dapat mencetak nilai saat ini:

nmcli> print ipv4.addresses ipv4.addresses:192.168.64.88/24, 192.168.64.90/24 

Setelah Anda menyelesaikan perubahan, simpan mereka ke koneksi dan keluar untuk menyelesaikan operasi:

nmcli> saveConnection 'enp7s0' (94170029-5620-4f90-ad78-704b21480b1a) berhasil diperbarui.nmcli> keluar 

Terakhir, mulai ulang koneksi untuk membuat perubahan efektif.

Manajer Jaringan dan nmcli adalah solusi lengkap untuk konfigurasi jaringan. Jika Anda belum pernah menggunakannya sebelumnya, mulailah dengan beberapa perintah dasar dan secara bertahap pindah ke pengaturan yang lebih kompleks. Lihat halaman manual dan contoh untuk menjalankan tugas tertentu.

Selanjutnya, mari kita tinjau beberapa perintah yang membantu Anda memecahkan masalah jaringan, dimulai dengan resolusi nama.

Perintah nslookup

Saat mengelola masalah konektivitas, resolusi nama DNS sering menjadi sumber masalah. nslookup utilitas membantu Anda memeriksa dan memecahkan masalah resolusi nama DNS.

Perintah ini tersedia dengan bind-utils paket pada sistem RHEL8 dan Fedora. Instal dengan dnf :

$ sudo dnf install -y bind-utils 

Untuk memeriksa resolusi nama host tertentu dengan cepat, gunakan nslookup dengan nama host sebagai argumen. Perintah menggunakan konfigurasi DNS default untuk resolusi nama:

$ nslookup redhat.comServer:        192.168.122.1Alamat:    192.168.122.1#53Jawaban non-otoritatif:Nama:    redhat.comAlamat:209.132.183.105 

Jika resolusi nama gagal, Anda dapat menggunakan server nama alternatif untuk resolusi dengan memberikan alamatnya sebagai argumen ketiga:

$ nslookup redhat.com 192.168.0.9Server:        192.168.0.9Alamat:    192.168.0.9#53Jawaban non-otoritatif:Nama:    redhat.comAlamat:209.132.183.105 

Informasi ini berguna untuk pemecahan masalah karena membantu mengidentifikasi apakah masalah tersebut lokal karena server tertentu, atau sesuatu yang lebih luas.

Anda juga dapat menggunakannya untuk menjalankan kueri DNS terbalik dengan memberikan alamat IP alih-alih nama host:

$ nslookup 209.132.183.105105.183.132.209.in-addr.arpa    name =redirect.redhat.com. 

nslookup utilitas adalah alat yang berguna untuk membantu memecahkan masalah jaringan yang terkait dengan resolusi nama DNS. Selanjutnya, mari kita lihat pemecahan masalah soket jaringan lokal.

Utilitas ss

Tugas umum lainnya saat memecahkan masalah konektivitas jaringan adalah menentukan apakah sambungan dibuat atau layanan tertentu tersedia di server.

ss perintah, kependekan dari statistik soket , adalah alat praktis yang menampilkan informasi soket jaringan. Ini adalah pengganti modern untuk netstat yang menyediakan fungsionalitas serupa, tetapi menyertakan beberapa fitur tambahan.

Gunakan ss tanpa opsi untuk melihat daftar lengkap semua soket jaringan yang sudah ada untuk jenis soket TCP, UDP, dan UNIX.

$ ssnetid state recv-q kirim-q Alamat lokal:port Alamat teman:portu_str estab 0 0* 25812* 25811u_str estab 0 0/run/systemd/jurnal/stdout 23604* 23603 ... terpotong outputu_str estab 0 0* 22566* 22171ICMP6 unconn 0 0*:ipv6-ICMP*:* icmp6 unconn 0 0*:ipv6-ICMP*:* tcp estab 0 0 192.168.122.169:ssh 192.168.122.1:45626

Karena perintah default menampilkan semua koneksi jaringan yang dibuat, daftar ini dapat menjadi ekstensif pada mesin yang sibuk, dengan lebih dari seribu entri. Untuk membantu Anda memecahkan masalah, ss menyediakan beberapa opsi pemfilteran.

Anda dapat menampilkan informasi soket untuk jenis soket tertentu dengan parameter baris perintah berikut:-t untuk TCP, -u untuk UDP, dan -x untuk UNIX.

Misalnya, tampilkan informasi soket TCP dengan ss -t :

$ ss -tstate recv-q Kirim-q Alamat lokal:Port Alamat peer:portestab 0 0 192.168.122.169:ssh 192.168.122.1:45626

Anda juga dapat memfilter daftar berdasarkan nama host atau alamat IP sumber atau tujuan. Misalnya, berikut adalah daftar koneksi yang dibuat untuk alamat IP tujuan 192.168.122.1:

$ SS DST 192.168.122.1NetID State RecV-Q Kirim-Q Alamat lokal:Port Peer Address:porttcp estab 0 0 192.168.122.169:ssh 192.168.122.1:45626

Perintah ini berguna untuk memecahkan masalah konektivitas jaringan secara umum atau antara host tertentu dalam jaringan. Aplikasi praktis lain untuk ss adalah untuk memverifikasi apakah layanan jaringan mendengarkan pada mesin lokal dengan alamat dan port yang benar. Untuk memverifikasi soket pendengar, gunakan opsi -l :

$ ss -lnetid state recv-q kirim-q Alamat lokal:port Alamat teman:portnl unconn 0 0 rtnl:networkManager/909 *nl unconn 0 0 rtnl:Systemd-resolve/1122 *... terpotong OutputUdp unconn 0 0 0.0.0.0:hostmon 0.0.0.0:*udp unconn 0 0 127.0.0.53%LO:Domain 0.0.0.0:Audp unconn 0 0 127.0.0.1:323 0.0.0.0:*udp unconn 0 0 [::0.0.1:323 0.0.0.0:*udp unconn 0 0 [::0.0 ]:hostmon [::]:*udp unconn 0 0 [::1]:323 [::]:*TCP Listen 0 128 0 .0.0.0:ssh 0.0.0.0:*tcp Dengarkan 0 128 028 0.0.0.0:hostmon 0.0.0.0:*tcp Dengarkan 0 128 [::]:SSH [::]:TCP Listen 0 128 [::]:Hostmon [::]:*

Anda dapat menggunakan opsi pemfilteran yang sama yang dijelaskan di atas untuk memfilter jenis soket tertentu. Misalnya, untuk mendaftar semua soket TCP yang mendengarkan, masukkan:

$ ss -ltstate recv-q kirim-q Alamat lokal:Port Alamat peer:portlisten 0 128 0.0.0.0:ssh 0.0.0.0:*Listen 0 128 0.0.0.0:hostmon 0.0.0.0.0:Listen 0 128 [::]:ssh [::]:Listen 0 128 [::]:hostmon [::]:

Alih-alih menampilkan nama layanan, seperti ssh atau hostmon , ss dapat menampilkan nomor port dengan menggunakan -n pilihan:

$ ss -ltnState recv-q kirim-q Alamat lokal:Port Alamat Peer:PortListen 0 128 0.0.0.0:22 0.0.0.0:listen 0 128 028 0.0.0.0:5355 0.0.0.0:Listen 0 128 [::]:22 [::]:Dengarkan 0 128 [::]:5355 [::]:

Terakhir, opsi berguna lainnya adalah -p untuk menampilkan informasi terkait proses seperti nama pengguna dan ID proses (PID). Beberapa layanan mungkin memerlukan hak istimewa yang lebih tinggi melalui sudo atau sebagai root untuk membuat daftar informasi proses:

$ sudo ss -tnlpState recv-q Kirim-q Alamat lokal:Port Peer Address:PortListen 0 128 0.0.0.0:22 0.0.0.0:* Pengguna:(("SSHD", PID =919, FD =5)) Dengarkan 0 128 0.0.0.0:5355 0.0.0.0:* Pengguna:(("Systemd-Resolve", PID =1122, FD =13)) Dengarkan 0 128 [::]:22 [::]:*         pengguna:(("sshd",pid=919,fd=7))DENGARKAN     0          128                     [::]:5355                   [::]     pengguna ))

ss alat adalah perintah penting di kotak alat sysadmin untuk tugas pemecahan masalah jaringan. Selanjutnya, mari kita lihat tracepath untuk melacak konektivitas jaringan antar host.

Perintah tracepath

kecepatan command adalah alat pemecahan masalah jaringan yang menampilkan jalur konektivitas jaringan antara host lokal dan host jarak jauh, mengidentifikasi semua router yang digunakan untuk merutekan lalu lintas di antara mereka.

Jika Anda tidak dapat terhubung ke layanan jaringan di host jarak jauh, tracepath membantu Anda menentukan di mana masalahnya.

kecepatan adalah pengganti traceroute , menawarkan fungsionalitas serupa. Perbedaan utamanya adalah tracepath menggunakan port UDP acak alih-alih protokol ICMP untuk pelacakan, sehingga tidak memerlukan hak istimewa yang lebih tinggi untuk dijalankan.

Untuk penggunaan dasar, berikan nama host atau alamat IP dari host tujuan. Anda juga dapat memberikan opsi -n untuk menampilkan alamat IP untuk router alih-alih nama mereka:

  $ tracepath n sat65server 1 ?:[localhost] PMTU 1500 1:192.168.122.1 0.415ms 1:192.168.122.1 0.299ms 2:192.168.10.10 0.904ms 3:192.168.88.1 1.127ms 4:192.168 .0.95                                          2.020ms     Lanjutkan:pmtu 1500  

Jika kecepatan tidak dapat terhubung ke hop jaringan, ini menampilkan tidak ada balasan . Secara default, jumlah hop maksimum yang dicoba adalah 30, yang biasanya cukup. Anda dapat mengubahnya dengan opsi -m .

Misalkan tidak menerima balasan setelah hop tertentu. Itu adalah indikator yang baik ke mana harus pergi selanjutnya untuk tugas pemecahan masalah Anda. kecepatan informasi tidak pasti, karena lalu lintas dapat diblokir karena beberapa alasan. Namun, ini membantu Anda mempersempit masalah dan fokus pada upaya penyelesaian.

Untuk alasan keamanan, banyak router di Internet memblokir lalu lintas, jadi tracepath mungkin tidak berguna untuk melacak konektivitas dengan layanan Internet. Ini masih berguna untuk pemecahan masalah jaringan lokal.

Apa selanjutnya?

Pada artikel ini, kami menjelajahi lima konfigurasi jaringan penting dan alat pemecahan masalah untuk sistem Linux. Alat-alat ini sangat kuat dan menyediakan banyak opsi yang sulit untuk dibahas dalam satu posting. Kami mendorong Anda untuk memeriksanya dan melihat dokumentasi dan halaman manual untuk melihat bagaimana Anda dapat memasukkannya ke dalam alur kerja Anda.

Ada alat jaringan Linux lain yang berguna, seperti tcpdump , nmap , dan firewall-cmd . Alat ini tercakup dalam artikel Aktifkan Sysadmin lainnya.

[ Jaringan sulit dikelola? Lihat Otomasi Jaringan untuk Semua Orang, buku gratis dari Red Hat. ]


Linux
  1. 5 alasan untuk menggunakan Linux di tahun 2020

  2. Memecahkan masalah perangkat keras di Linux

  3. 10 Perintah Linux Untuk Diagnostik Jaringan

  1. 8 perintah Linux praktis favorit saya

  2. Pemecahan Masalah Jaringan Linux Dan Debugging?

  3. Linux menemukan perintah

  1. Perintah gema Linux

  2. 'jaringan' Layanan OS Linux

  3. Memecahkan masalah komunikasi jaringan yang lambat atau Batas Waktu Koneksi di Linux