GNU/Linux >> Belajar Linux >  >> Linux

Pemecahan Masalah Jaringan Linux Dan Debugging?

Dari waktu ke waktu pengguna Linux dan Unix dihadapkan pada berbagai masalah jaringan. Banyak dari masalah ini disajikan di sini dan di beberapa forum pemecahan masalah lainnya, tetapi masalah ini sangat konkret dan berisi banyak informasi teknis tambahan, dan terkadang agak sulit untuk memahami poin utama dan alasan sebenarnya dari perilaku sistem kereta.

Dengan mengajukan pertanyaan ini, niat saya adalah untuk memulai wiki komunitas halaman yang memungkinkan generalisasi pengalaman pemecahan masalah dan debugging jaringan kami. Saya berharap pengguna Linux dan Unix dapat lebih mudah mengenali dan memecahkan ("membagi dan menaklukkan") masalah jaringan mereka menggunakan halaman ini.

Induk halaman ini harus menjadi Praktik terbaik untuk mendiagnosis masalah. Tapi di sini kita harus fokus pada pemecahan masalah masalah jaringan dari pengguna dan ruang kernel.

Saya kira, jika Anda:

  1. Bagikan informasi tentang penggunaan beberapa alat diagnostik jaringan yang hebat dengan contoh penggunaan nyata dan contoh bug jaringan, yang membantu mereka menangkapnya.
  2. Bagikan tautan ke tutorial jaringan hebat yang terkait dengan subjek ini
  3. Ceritakan tentang metode atau resep umum yang memungkinkan untuk mengatasi beberapa kelas masalah jaringan
  4. Berbagi informasi tentang set alat Anda untuk debugging dan pemecahan masalah jaringan

itu akan sangat cocok untuk topik ini.

Saya akan mulai dari membagikan tautan ke alat diagnostik varios dan tutorial sederhana berusia 12 tahun. Juga tutorial archlinux tampaknya memiliki informasi aktual tentang subjek kita. Dan untuk menyelami jaringan linux, kita pasti perlu mengunjungi Linux Networking-HOWTO.

Jawaban yang Diterima:

Menurut saya, prinsip umum pemecahan masalah jaringan adalah:

  1. Cari tahu pada level apa tumpukan TCP/IP (atau tumpukan lain) yang mengalami masalah.
  2. Pahami apa perilaku sistem yang benar, dan apa yang menyimpang dari status sistem normal
  3. Cobalah untuk mengungkapkan masalah dalam satu kalimat atau beberapa kata
  4. Menggunakan informasi yang diperoleh dari sistem buggy, pengalaman Anda sendiri dan pengalaman orang lain (google, berbagai forum, dll.), mencoba menyelesaikan masalah sampai berhasil (atau gagal)
  5. Jika Anda gagal, mintalah bantuan atau saran kepada orang lain

Bagi saya, saya biasanya mendapatkan semua informasi yang diperlukan menggunakan semua alat yang diperlukan, dan mencoba mencocokkan informasi ini dengan pengalaman saya. Memutuskan tingkat tumpukan jaringan yang berisi bug membantu untuk memotong varian yang tidak mungkin. Menggunakan pengalaman orang lain membantu menyelesaikan masalah dengan cepat, tetapi sering kali mengarah pada situasi, bahwa saya dapat memecahkan beberapa masalah tanpa pemahamannya dan jika masalah ini terjadi lagi, tidak mungkin bagi saya untuk mengatasinya lagi tanpa Internet.

Dan secara umum, saya tidak tahu bagaimana saya memecahkan masalah jaringan. Sepertinya ada beberapa fungsi ajaib di otak saya yang bernama SolveNetworkProblem(information_about_system_state, my_experience, people_experience) , yang terkadang dapat mengembalikan jawaban yang tepat, dan terkadang juga dapat gagal (seperti di sini TCP mati pada laptop Linux).

Saya biasanya menggunakan utils dari set ini untuk debugging jaringan:

  • ifconfig (atau ip link , ip addr ) – untuk mendapatkan informasi tentang antarmuka jaringan
  • ping – untuk memvalidasi, jika host target dapat diakses dari mesin saya. ping juga dapat digunakan untuk diagnostik DNS dasar – kita dapat melakukan ping ke host dengan alamat IP atau dengan nama hostnya dan kemudian memutuskan apakah DNS berfungsi sama sekali. Dan kemudian traceroute atau tracepath atau mtr untuk melihat apa yang terjadi dalam perjalanan ke sana.
  • dig – mendiagnosa semua DNS
  • dmesg | less atau dmesg | tail atau dmesg | grep -i error – untuk memahami apa yang dipikirkan kernel Linux tentang beberapa masalah.
  • netstat -antp + | grep smth – penggunaan perintah netstat saya yang paling populer, yang menampilkan informasi tentang koneksi TCP. Seringkali saya melakukan beberapa pemfilteran menggunakan grep. Lihat juga ss . yang baru perintah (dari iproute2 standar yang baru rangkaian alat jaringan Linux) dan lsof seperti pada lsof -ai tcp -c some-cmd .
  • telnet <host> <port> – sangat berguna untuk berkomunikasi dengan berbagai layanan TCP (misalnya pada SMTP, protokol HTTP), kami juga dapat memeriksa peluang umum untuk terhubung ke beberapa port TCP.
  • iptables-save (di Linux) – untuk membuang penuh tabel iptables
  • ethtool – dapatkan semua parameter kartu antarmuka jaringan (status tautan, kecepatan, parameter pembongkaran…)
  • socat – alat tentara swiss untuk menguji semua protokol jaringan (UDP, multicast, SCTP…). Sangat berguna (lebih dari telnet) dengan beberapa -d pilihan.
  • iperf – untuk menguji ketersediaan bandwidth
  • openssl (s_client , ocsp , x509 …) untuk men-debug semua masalah SSL/TLS/PKI.
  • wireshark – alat canggih untuk menangkap dan menganalisis lalu lintas jaringan, yang memungkinkan Anda menganalisis dan menangkap banyak bug jaringan.
  • iftop – tampilkan pengguna besar di jaringan/router.
  • iptstate (di Linux) – tampilan terkini dari pelacakan koneksi firewall.
  • arp (atau yang baru (Linux) ip neigh ) – menampilkan status tabel ARP.
  • route atau yang lebih baru (di Linux) ip route – menampilkan status tabel perutean.
  • strace (atau truss , dtrace atau tusc tergantung pada sistem) – adalah alat yang berguna yang menunjukkan panggilan sistem apa yang melakukan proses masalah, itu juga menunjukkan kode kesalahan (errno) ketika panggilan sistem gagal. Informasi ini sering mengatakan cukup untuk memahami perilaku sistem dan memecahkan masalah. Atau, menggunakan breakpoint pada beberapa fungsi jaringan di gdb dapat memberi tahu Anda kapan dibuat dan dengan argumen apa.
  • untuk menyelidiki masalah firewall di Linux:iptables -nvL menunjukkan berapa banyak paket yang cocok dengan setiap aturan (iptables -Z ke nol penghitung). LOG target yang dimasukkan ke dalam rantai firewall berguna untuk melihat paket mana yang mencapainya dan bagaimana paket tersebut telah diubah ketika mereka sampai di sana. Untuk mendapatkan NFLOG lebih lanjut (terkait dengan ulogd ) akan mencatat paket lengkap.
Terkait:Glob dengan Urutan Numerik?
Linux
  1. Memecahkan masalah perangkat keras di Linux

  2. Cara Mengatur Alamat IP Statis dan Konfigurasi Jaringan di Linux

  3. Dasar-dasar Linux - IP Statis dan Konfigurasi Jaringan di Debian Linux

  1. 5 perintah pemecahan masalah jaringan Linux

  2. Memahami Desktop Linux?

  3. Cara Memantau dan Mencatat Lalu Lintas Jaringan di Linux Menggunakan vnStat

  1. Cara:MTR – Memahami dan Mengatasi Masalah Konektivitas Jaringan

  2. 'jaringan' Layanan OS Linux

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