Pemadaman jaringan sementara yang aneh di Linux


8

Saya menghadapi masalah yang sangat menyebalkan yang saya perhatikan seminggu dari sekarang dan untuk itu saya tidak dapat menemukan jawaban: jaringan saya tiba-tiba berhenti merespons, biasanya kembali tepat 25 detik kemudian. Saya menggunakan kernel 3.10.4 dan sekarang bermigrasi ke 3.11-rc4 untuk melihat apakah ada yang berubah, tetapi tidak, tingkah lakunya sama. Dan karena ini adalah masalah yang sulit dikenali karena fakta bahwa surfing web biasa adalah dalam "semburan" dan pemadaman itu benar-benar acak, saya tidak bisa mengatakan masalah ini hadir di kernel sebelumnya juga (saya selalu menggunakan custom tetapi kernel yang belum ditambal dari kernel.org, semuanya dikompilasi oleh saya sendiri)

Saya tidak bisa mengatakan kernel adalah pelakunya baik, tapi saya bisa mengatakan tidak ada petunjuk pada sistem log (aku memeriksa kedua /var/log/syslogdan /var/log/messagesdan ada yang tidak biasa ada) dan perangkat keras yang tampaknya tidak bersalah, untuk menunjukkan masalah menggunakan salah satu kartu jaringan saya:

lspci output:

02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev 01)
04:00.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 30)

dan saya sudah mencoba untuk bertukar port ethernet switch dan masih tidak ada orang lain di mana saya bekerja memiliki masalah kecuali saya (walaupun kami menggunakan mesin yang serupa, saya satu-satunya yang menggunakan Linux, jadi saya harus mengambil beberapa lelucon terkenal tentang hal itu sebagai yah ... hehe).

Saya berlari wireshark di mesin saya dan meninggalkannya terus-menerus melakukan ping gateway kami dan mesin lain di segmen jaringan yang sama. Kemudian, pada tanda pertama kerusakan jaringan saya akan memeriksanya dan memverifikasi gateway berhenti merespons ping, tetapi mesin lain masih ada di sana merespons secara normal. Beberapa kali lain adalah mesin lain yang berhenti merespons dan gateway baik-baik saja, dan beberapa kali lain keduanya berhenti merespons. Saya tidak tahu harus berbuat apa lagi, jadi saya butuh bantuan atau tips tentang cara men-debug lebih lanjut ini, karena log sistem sepenuhnya normal.

Saya memiliki file konfigurasi kernel dan file tangkap dari wireshark yang menunjukkan situasinya. Saya dapat memposting di sini atau di beberapa situs pastebin kalau-kalau ada yang merasa berguna untuk memahami kasus ini, tolong beri tahu saya tingkat detail yang harus saya gunakan (saya kira tingkat paket tanpa data mentah akan cukup).



Ini terdengar seperti konflik alamat IP (yaitu beberapa mesin lain memiliki alamat IP yang sama seperti milik Anda). Host lain berayun bolak-balik tergantung dari mana mereka menerima respons ARP dari yang terbaru.
Gilles 'SANGAT berhenti menjadi jahat'

Gilles, saya cukup yakin IP saya unik di jaringan, tetapi seandainya itu bisa terjadi saya masih berpikir itu tidak akan menjelaskan satu host mendapatkan ping secara normal sementara yang lain tidak (mereka sedang ping secara bersamaan). Apakah kamu tidak setuju?
Claudio

@Gilles, kamu benar. Saya baru saja menemukan ponsel seseorang hari ini menggunakan IP saya melalui penugasan DHCP (IP saya diperbaiki tetapi kolam DHCP tumpang tindih). Seperti yang saya katakan, saya awalnya membuang kemungkinan ini karena saya dapat melakukan ping host lain sementara yang pertama tidak dapat dijangkau, tetapi hari ini saya dengan cepat mengubah IP saya sementara semuanya berhenti dan ada IP saya sedang di-ping dari NIC lain. Tolong pindahkan komentar Anda menjadi jawaban sehingga saya bisa menerimanya? Anda adalah orang pertama yang benar-benar menjawabnya. Terima kasih!
Claudio

Jawaban:


10

Gejalanya konsisten dengan konflik alamat IP. Konflik alamat IP muncul ketika mesin Anda dan beberapa mesin lain di jaringan yang sama mencoba menggunakan alamat IP yang sama .

Pada jaringan tautan lokal, pengalamatan didasarkan pada alamat MAC . Setiap kartu Ethernet memiliki alamat MAC sendiri (kecuali kesalahan konfigurasi atau kedengkian). Perute yang memutuskan ke mana harus mengirim paket IP akan mengirimkan permintaan ARP untuk alamat IP target pada semua port-nya. Pesan itu kadang-kadang dikenal sebagai "siapa yang memiliki": router sedang berusaha mencari tahu mana dari rekan-rekannya yang bertanggung jawab untuk alamat IP ini. Setelah router menerima balasan yang berisi alamat MAC, router dapat membuat dan mengirim frame Ethernet (paket Ethernet) yang berisi paket IP ke alamat MAC itu. Karena pertukaran ini membutuhkan waktu, router menyimpan cache dari informasi ARP terbaru. (Ada beberapa jenis pesan ARP, tapi apa yang saya jelaskan di sini cukup untuk memahami masalah saat ini.)

Jadi singkatnya, router perlu tahu perangkat fisik apa yang memiliki setiap alamat IP yang mereka kirim paket IP. Jadi apa yang terjadi ketika ada dua perangkat yang mengklaim alamat IP yang sama? Router menerima balasan dari salah satu perangkat, dan sejak saat itu memutuskan bahwa alamat IP ini milik perangkat itu, sampai entri cache yang sesuai berakhir. Setelah entri cache kedaluwarsa, router akan mengirim permintaan ARP baru, dan mungkin perangkat lain akan membalas lebih cepat kali ini. Ini menjelaskan mengapa situasi seperti itu tidak stabil: satu menit router berbicara kepada Anda, menit berikutnya berbicara dengan orang lain.

Jika Anda terus-menerus mem-ping seseorang, maka router menyimpan alamat IP Anda dalam cache ARP hampir sepanjang waktu. Jadi saat Anda melakukan ping, hanya ada jendela kecil di mana orang lain dapat menggantikan Anda dalam cache (setelah entri cache Anda berakhir, sebelum ping berikutnya datang). Itu sebabnya mengamati masalah membuatnya sebagian besar hilang, yang bisa membuat frustasi sampai Anda menyadari apa masalahnya.

Dalam kasus Anda, sepertinya router lokal Anda menyimpan entri dalam cache selama 25 detik. Saat Anda berada di cache, Anda baik selama 25 detik. Lalu kadang-kadang orang lain datang, pada saat-saat yang tampak acak, dan Anda kehabisan selama 25 detik.

Saat Anda mencoba menghubungi beberapa mesin pada tautan lokal yang sama, masing-masing memiliki tabel ARP sendiri, sehingga Anda dapat mengamati hasil yang tidak konsisten, dengan satu mesin memutuskan bahwa Anda memiliki alamat IP dan mesin lain memutuskan bahwa orang lain melakukannya.

Perute kelas atas mencatat konflik alamat IP, jadi jika Anda merasa sedang mengalami konflik, mintalah bantuan administrator sistem Anda. Pastikan dulu bahwa itu bukan mesin Anda yang mencoba menggunakan alamat IP yang seharusnya tidak digunakan!


1
BTW: Anda juga dapat menggunakan arpinguntuk mencari duplikat, dengan memilikinya ARP untuk alamat IP Anda. Anda seharusnya tidak mendapat tanggapan. Atau lakukan dari komputer lain, dan Anda akan melihat kedua respons.
derobert

1

Saya akan menyarankan Anda memiliki 2 entri nameserver /etc/resolv.conf, dan entri pertama merujuk ke server DNS yang turun atau tidak terjangkau atau lainnya secara berkala. Kode resolver di libc akan mencoba alamat IP nameserver pertama, dapatkan batas waktu dan kemudian coba alamat IP nameserver kedua, yang berhasil.

Untuk mengujinya, Anda dapat mengganti alamat IP "nameserver" /etc/resolv.confhanya dengan satu, 8.8.8.8, yang merupakan server DNS publik Google. Jika pemadaman tidak terjadi, server nama Anda adalah masalahnya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.