Log menunjukkan permintaan IKE yang sama dua kali, seseorang menunjuk uplink seluler, dan tiket ditutup dengan dugaan. Dugaan itulah mitosnya: paket berulang adalah pengamatan tentang satu pertukaran, bukan diagnosis sebuah tautan. Pengiriman ulang adalah perilaku normal dengan aturannya sendiri, dan muncul di jalur sehat setiap kali balasan lambat. Ikuti balasannya sebelum menyalahkan antarmuka.

Mitos: permintaan berulang membuktikan kehilangan pada satu tautan

Dua hal berbeda menghasilkan duplikat, dan tidak satu pun menyebut pelakunya. Peminta dapat mengulang permintaan karena tidak menerima jawaban, atau titik penangkapan dapat menampilkan paket yang sama dua kali karena lokasi pemasangannya pada tumpukan. Tap yang melihat masuk dan keluar pada host yang sama akan dengan senang hati mencatat satu paket sebagai dua, dan operator yang membaca log itu tidak punya cara membedakannya tanpa pengenal pertukaran. Perlakukan duplikat sebagai peristiwa pengatur waktu sampai Anda dapat menyebut mana dari keduanya yang Anda pegang.

Dua uplink memperburuk kebingungan, bukan memperbaikinya. Satu baris log menyebut satu antarmuka, sedangkan balasan mungkin keluar melalui yang lain, jadi antarmuka dalam pesan menjelaskan di mana paket terlihat dan bukan bentuk percakapan. Itulah sebabnya pertanyaan pertama adalah pertukaran mana yang Anda lihat, bukan tautan mana yang rusak.

Apa yang sebenarnya dikatakan pengiriman ulang

Pada IKEv2, pengiriman ulang bekerja seperti ini: peminta mengulang permintaan ketika tidak ada balasan yang datang, dan penjawab dapat mengirim ulang jawaban yang tersimpan alih-alih menghitung yang baru. Pengenal pesan milik pertukaran itu, dan itulah yang membuat permintaan berulang dengan pengenal sama dikenali sebagai protokol yang bekerja, bukan upaya baru. Upaya awal sering memerlukan lebih dari alamat sumber atau SPI penginisiasi untuk dikorelasikan, jadi catatan pertukaran milik platform lebih baik daripada daftar paket. IKEv1 mengikuti aturan berbeda dengan pengenal berbeda, dan peringatan vendor tentang duplikat paket pertama tidak berarti sama di semua versi.

Jadi stempel waktu pengiriman ulang memberi tahu Anda bahwa pengatur waktu kedaluwarsa. Itu tidak memberi tahu Anda lompatan mana yang lambat, dan tentu tidak memberi tahu bahwa operator bersalah. Itu klaim terpisah, dan hanya yang kedua berguna dalam tiket.

Konsekuensi praktisnya adalah mencatat pertukaran sebelum menarik kesimpulan. Catat alamat penerimaan lokal, jalur balasan yang dipilih kebijakan, tuple peer, dan pengenal pertukaran di satu tempat, karena masing-masing menjawab pertanyaan berbeda saat catatan dibaca nanti.

Empat titik pengamatan sebagai satu rantai

Pikirkan pertukaran sebagai empat mata rantai, bukan empat tempat terpisah untuk dilihat. Mata rantai menyimpan bukti atau tetap tidak diketahui, dan rantai hanya sekuat mata rantai terlemah yang tercatat. Tabel di bawah adalah inventarisnya: apa yang dapat dibuktikan setiap posisi dan apa yang dibiarkan utuh.

PosisiBukti yang dapat diberikannyaApa yang dibiarkan terbuka
Penginisiasi mengirimPermintaan meninggalkan host iniApakah sampai ke peer
Penjawab menerimaPermintaan tibaApakah balasan dihasilkan
Penjawab mengirimBalasan meninggalkan gatewayApakah mengikuti jalur yang dimaksud
Penginisiasi menerimaPertukaran selesaiApakah kebijakan menerima hasilnya

Isi rantai hanya di tempat Anda punya akses, dan tandai sisanya tidak diketahui alih-alih menyimpulkannya. Hook yang merekam paket di satu mesin tidak mengatakan apa pun tentang apa yang diterima mesin jauh, dan baris log yang mencatat permintaan terlihat bukan bukti bahwa balasan pernah keluar. Celah yang jujur lebih berguna daripada catatan yang tampak lengkap tetapi dibangun dari dugaan.

Temukan transisi pertama yang hilang

Telusuri rantai dari penginisiasi ke luar dan berhenti di mata rantai pertama tanpa bukti. Jika gateway tidak pernah mencatat permintaan, kesalahan ada di jalur sebelumnya. Ketika gateway mencatat permintaan yang sama berulang kali sementara klien tidak pernah mencatat balasan, arah kembali adalah tersangka: alamat sumber, penerjemahan, dan penyaringan di setiap batas yang Anda kendalikan. Jika balasan tiba dan klien tetap tidak bergerak, pertanyaannya telah meninggalkan transportasi dan menjadi kebijakan atau keadaan.

Jaga peer dan protokol tetap saat membandingkan, dan ingat bahwa penundaan, kehilangan, kebijakan, dan keadaan masing-masing menghasilkan garis waktu berbeda. Jaringan seluler tidak otomatis menjadi penyebabnya, dan jalur tetap tidak otomatis cukup andal untuk setiap kebutuhan. Tangkap kedua arah selama pertukaran hidup:

tcpdump -ni any -vv 'udp port 500 or udp port 4500'

Ketika akses berhenti sebelum ujung jauh, catatan tetap membantu jika menyebutkan di mana berhentinya. Penangkapan hanya pada penginisiasi dapat menunjukkan permintaan keluar dan tidak ada balasan masuk, yang mempersempit kesalahan ke semua yang setelah hook itu tanpa berpura-pura tahu lompatan mana yang menjatuhkannya. Tandai mata rantai jauh sebagai tidak diketahui dan biarkan orang berikutnya yang punya akses mengisinya. Ditulis begitu, catatan tetap jujur dan masih singkat.

Bandingkan sebelum mengubah apa pun. Mengulang permintaan yang sama ke peer yang sama dengan protokol yang sama menjaga variabel tetap terhitung, sedangkan reset, pembaruan kunci, atau suntingan kebijakan di antara penangkapan merusak perbandingan. Jika perubahan tak terhindarkan, tangkap lagi segera sesudahnya agar sebelum dan sesudahnya masih menggambarkan pertukaran yang sama.

Apa kata laporan yang berguna

Laporan yang layak ditindaklanjuti memasangkan satu permintaan dengan balasannya dan menyebut langkah pertama yang tidak punya bukti di belakangnya. Kalimat itu bertahan dibaca seminggu kemudian oleh insinyur yang tidak hadir, dan memberi orang berikutnya tempat memulai alih-alih tersangka.

Jangan pernah melemahkan pemeriksaan identitas atau memperluas kumpulan protokol yang diizinkan hanya untuk memeriksa teori pengiriman ulang. Simpan paket dan catatan peristiwa asli sebelum reset apa pun, karena reset justru menghancurkan materi yang akan Anda kumpulkan dan menghapus waktu yang menunjukkan di mana pertukaran terhenti.

Mitosnya adalah satu duplikat membuktikan operator bersalah. Kenyataannya satu duplikat membuktikan pengatur waktu kedaluwarsa, dan jawabannya hidup di jalur balasan.

Artikel terkait