Ping melalui VPN: mengapa peraturan balasan gema terlepas laluan pulang
Balasan gema menukar jenis ICMP, bukan port perkhidmatan. Jejaki paket dalaman melepasi penghantaran, NAT dan penapis stateful sebelum membuka port.
Ping hos melalui VPN dan permintaan keluar dengan satu jenis ICMP lalu kembali dengan jenis lain, yang cukup untuk mengelirukan mana-mana peraturan yang ditulis dalam istilah port. Tiada port perkhidmatan destinasi dalam pertukaran gema untuk disalin ke peraturan pulang, dan penapis yang menjangkakan simetri akan menggugurkan balasan sementara permintaan berlalu tanpa halangan. Pembaikan bermula dengan membaca paket sebagaimana adanya, kemudian memutuskan sempadan mana dalam laluan yang membuat keputusan. Biasanya dua lapisan berfungsi sementara lapisan ketiga menggugurkan balasan secara senyap. Bahagian di bawah memisahkannya mengikut urutan paket bertemu dengannya.
Paket bertukar jenis, bukan port
Permintaan gema ialah ICMP jenis 8, kod 0, dan membawa pengecam serta nombor jujukan. Balasannya ialah jenis 0, kod 0, dengan pengecam dan jujukan yang sama, dan hujung IP ditukar. RFC 792 mentakrifkan medan itu, dan pengecam itulah yang membolehkan penghantar memadankan balasan dengan permintaannya sendiri.
Apa yang tiada juga sama penting: tiada pengepala TCP atau UDP, jadi tiada port untuk dibenarkan. Peraturan yang menamakan port untuk balasan gema menerangkan paket yang tidak akan wujud. Ini kesilapan paling biasa dalam tiket ping VPN. Peraturan itu kelihatan khusus, tidak terpakai kepada apa pun, dan membiarkan kegagalan tepat di tempatnya.
Tiga konteks menentukan paket
Jika ping menyasarkan hos di LAN jauh, permintaan mesti dihantar oleh gateway. Jika ia menyasarkan alamat milik gateway itu sendiri, ia berakhir di laluan input setempat. Jika gateway yang memulakan ping, paket bermula di laluan outputnya sendiri dan tidak melintasi keputusan penghantaran sama sekali.
Ketiga-tiga konteks ini mempunyai rantaian peraturan dan pembilang yang berbeza, dan memperlakukannya sebagai satu ialah sebab «tembok api membenarkan ICMP» masih boleh menghasilkan ping yang gagal. Terowong luar ialah konteks keempat: membenarkan pendengar VPN tidak membenarkan permintaan dalaman yang dinyahkapsul secara automatik, dan kebenaran dalaman tidak berkata apa-apa tentang sama ada terowong luar hidup.
Penapis stateful dan stateless mengendalikan balasan secara berbeza
Tembok api stateful yang melihat permintaan keluar boleh mengaitkan balasan dengan aliran itu dan membenarkannya tanpa peraturan kedua. Penapis stateless tiada memori sedemikian, jadi arah pulang memerlukan kebenaran eksplisitnya sendiri, dengan sumber dan destinasi diterbalikkan.
Semak model mana yang benar-benar dilaksanakan oleh produk sebelum menulis apa-apa. Peraturan untuk permintaan gema tidak semestinya merangkumi balasan gema, dan produk yang menjejaki pertanyaan ICMP masih boleh menggunakan dasar berbeza pada balasan yang tiba di antara muka lain.
Hadkan apa yang anda benarkan. Membenarkan setiap balasan gema dari mana-mana bukanlah sama dengan melengkapkan persekutuan stateful, dan nombor jenis tidak mengesahkan penghantar.
Terjemahan juga menukar pengecam
Jika terjemahan sumber memang disengajakan, tupel di hujung jauh tidak sepadan dengan yang dihantar oleh klien. NAT boleh menterjemah pengecam pertanyaan ICMP bersama alamat, jadi mendesak nombor yang sama muncul di kedua-dua belah menghasilkan ketidakpadanan palsu.
Sebaliknya kaitkan pemetaan yang dilaporkan oleh penterjemah. Penterjemah yang menulis semula pengecam tidak akan mengekalkan nombor yang dicatat oleh klien anda, jadi anggap pemetaan sebagai identiti dan bukan nombor. Kemudian jejaki satu permintaan yang boleh dikenali sepanjang laluan: sahkan ia sampai ke destinasi dengan sumber yang dijangka, sahkan destinasi telah mengeluarkan balasan, jejaki laluan balasan itu kembali, dan sahkan klien menerimanya dan bukan sekadar melihat pembilang gateway meningkat.
Jangan gabungkan ralat ICMP ke dalam dasar gema
Mesej «penyerpihan diperlukan» yang digunakan oleh penemuan MTU laluan bukan balasan gema, dan muatannya memetik paket yang mencetuskannya. Kebenaran gema sahaja yang menggugurkan ralat itu secara senyap menukar masalah saiz menjadi sambungan tergantung, yang bertentangan dengan berguna.
Awas yang sama terpakai kepada keluarga alamat. ICMPv6 menggunakan jenis mesej berbeza dan membawa fungsi penting yang tidak ada pada IPv4, jadi menyalin nombor ini ke dalam peraturan IPv6 memang salah.
Apabila pertukaran gema berfungsi, uji aplikasi sebenar secara berasingan. Ping yang berjaya membuktikan perjalanan pergi dan balik satu protokol pada satu saiz ke satu destinasi, dan ia bukan lesen untuk menganggap HTTPS, SMB atau mana-mana aliran lain dibenarkan.