VPN dwi-timbunan: klien yang memilih keluarga alamat, bukan anda
Satu nama, dua keluarga, dua laluan berbeza. Terowong boleh sihat dan permintaan masih gagal kerana klien memilih calon yang tidak pernah anda rutekan.
Terowong beroperasi, laman IPv4 dimuatkan, dan satu nama hos tamat masa. Kesimpulan segera ialah VPN rosak atau kelayakan salah, dan biasanya kedua-duanya tidak benar. Nama itu mengembalikan alamat IPv4 dan IPv6, aplikasi memilih satu, dan hanya satu daripada calon itu mempunyai laluan yang berfungsi. Klien yang membuat keputusan pemilihan; terowong semata-mata tidak meliputi apa yang dipilihnya.
Pemilihan bukan janji liputan
Pemilihan alamat lalai, yang diterangkan dalam RFC 6724, menentukan pasangan sumber dan destinasi mana yang diutamakan hos apabila beberapa tersedia. Happy Eyeballs menambah strategi sambungan di atasnya: ia memulakan percubaan pada kedua-dua keluarga dan mengekalkan yang menjawab dahulu, supaya pengguna tidak menunggu keluarga yang rosak tamat masa.
Kedua-dua mekanisme tidak mencipta laluan. Jika terowong anda hanya membawa IPv4, calon AAAA masih destinasi sah yang boleh dicuba klien, dan kegagalan muncul sebagai pemuatan perlahan dan bukan ralat, kerana pelayar berundur. Pengguna melaporkan laman perlahan, bukan rosak, dan tiket sokongan mewarisi kekaburan itu. Hasilkan semula dengan keluarga tetap dan laporan menjadi khusus.
Unduran itulah sebabnya gejala tidak konsisten antara aplikasi. Pelayar menyembunyikan kelewatan; klien baris arahan dengan keluarga tetap menunjukkan kegagalan sebenar serta-merta.
Cari keluarga yang benar-benar digunakan oleh permintaan
Mulakan dengan nama, bukan terowong. Tanya kedua-dua jenis rekod dan catat apa yang kembali:
dig +short A example.com
dig +short AAAA example.com
curl -4 -sS -o /dev/null -w '%{http_code}\n' https://example.com
curl -6 -sS -o /dev/null -w '%{http_code}\n' https://example.comJika permintaan v4 berjaya dan permintaan v6 gagal, anda telah menghasilkan semula masalah dalam bentuk yang boleh dinyahpepijat. Jika kedua-duanya berjaya dari shell dan pelayar masih gagal, periksa penyelesai aplikasi itu sendiri atau jawapan cache sebelum menyentuh terowong.
Simpan keluarga dan destinasi dalam nota anda. Tiket yang mengatakan laman tidak dimuatkan melalui VPN tidak dapat diperiksa oleh sesiapa, manakala tiket yang mengatakan AAAA gagal dan A berfungsi menunjukkan laluan tertentu.
Periksa laluan untuk keluarga itu
Untuk keluarga yang gagal, tanya kernel laluan mana yang akan digunakannya dan bandingkan dengan alamat terowong yang dikonfigurasikan. Pada Linux, ip -6 route get untuk destinasi menunjukkan antara muka dan sumber yang akan dipilih.
Kemudian periksa terowong itu sendiri. Rakan WireGuard membawa senarai IP yang dibenarkan, dan entri untuk 0.0.0.0/0 tidak mengatakan apa-apa tentang IPv6. Jika senarai rakan tiada awalan IPv6, klien tiada sebab menghantar trafik AAAA ke dalam terowong, dan paket keluar melalui apa yang hos akan lakukan sebaliknya.
Peraturan tembok api dan dasar NAT wajar mendapat pemeriksaan yang sama bagi setiap keluarga. Peraturan yang ditulis untuk IPv4 tidak meliputi IPv6 pada mana-mana platform, dan inilah sebab paling biasa satu keluarga berfungsi manakala yang lain tidak.
Jangan nyahdayakan IPv6 untuk memudahkan tangkapan skrin
Mematikan IPv6 di seluruh sistem akan menghilangkan gejala dan meninggalkan anda tanpa diagnosis. Ia juga merosakkan mana-mana destinasi yang hanya IPv6, dan menyembunyikan pepijat yang sama untuk aplikasi seterusnya. Jika sesebuah mesin memang tidak sepatutnya menggunakan IPv6, itu dasar yang disengajakan dengan pemilik dan ujian. Mematikannya semasa insiden bukan kedua-duanya.
Putuskan apa yang perlu dilakukan klien dengan keluarga itu dan konfigurasikannya secara eksplisit: bawa melalui terowong, atau sekat dengan cara yang disokong supaya pemilihan tidak pernah menawarkan calon yang tidak dapat dicapai. Kedua-duanya reka bentuk yang sah. Nyahdaya global bukan kedua-duanya, kerana itu bukan reka bentuk sama sekali.
Apa yang perlu ditulis dalam tiket
Catat empat perkara: nama hos, keluarga yang gagal, laluan yang dipilih kernel, dan hasil permintaan khusus keluarga. Set itu cukup untuk orang lain menghasilkan semula kegagalan tanpa meneka laluan mana antara dua itu yang anda maksudkan.
Peraturan pemilihan alamat RFC 6724 menjelaskan mengapa klien mengutamakan calon yang diutamakannya, dan RFC 8305 menjelaskan tingkah laku perlumbaan yang menyembunyikan kelewatan. Kedua-duanya tidak akan merutekan paket untuk anda, dan itulah bahagian yang terowong mesti lakukan.