Matikan IPv6 untuk membaiki kebocoran VPN? Tentukan dasar itu sebaliknya
Alamat link-local bukan kebocoran dan laluan IPv6 global juga bukan. Pilih dahulu antara menyekat, membawa dan membiarkan.
Alamat daripada julat IPv6 muncul pada halaman ujian, terowong jelas tidak membawanya, dan nasihat paling popular di internet ialah mematikan IPv6 di mana-mana. Perintah itu memang mendiamkan panel. Ia juga membuang protokol yang mungkin diharapkan oleh rangkaian akses, dan meninggalkan anda tanpa tahu sama ada alamat itu kebocoran sebenar, alamat antara muka link-local, atau penyelesai yang menjalankan tugasnya. Tiga syarat menentukan kawalan yang betul, dan hanya satu daripadanya membawa kepada penyekatan.
Kenal pasti apa yang sebenarnya diukur oleh alat itu
Penggera palsu yang paling biasa ialah alamat link-local, yang bermula dengan fe80: dan wujud pada setiap antara muka yang berkemampuan IPv6, sama ada mesin boleh mencapai internet melalui IPv6 atau tidak. Ia muncul dalam senarai antara muka dan dalam sesetengah diagnostik aplikasi, dan tidak mengatakan apa-apa tentang laluan trafik anda.
Penggera palsu kedua ialah alamat setempat unik dalam fc00::/7, iaitu julat peribadi yang digunakan dalam rangkaian. Alat yang mencetak setiap alamat hos akan menyenaraikannya dengan gembira di sebelah alamat awam. Sesiapa yang membaca dengan tergesa-gesa menyebutnya kebocoran, kemudian menghabiskan sejam pada masalah yang tidak wujud.
Yang ketiga sama sekali bukan penggera palsu. Alamat global yang mencapai internet di luar terowong ialah kebocoran sebenar, dan ia wajar diukur sebelum membuat sebarang keputusan:
ip -6 addr show scope global
ip -6 route show default
curl -6 -sS --max-time 6 https://ifconfig.co
Jika perintah pertama mencetak alamat global dan yang ketiga mengembalikan alamat IPv6 awam yang bukan milik terowong, anda mempunyai laluan sebenar di luar terowong. Jika yang pertama tidak mencetak apa-apa selain entri link-local, tidak pernah ada kebocoran untuk dibaiki.
Tiga syarat menentukan kawalan
Keputusannya bukan "IPv6 baik" atau "IPv6 buruk". Keputusannya ialah situasi mana antara tiga yang anda hadapi, dan setiap satu mempunyai jawapan betul yang berbeza dengan kos berbeza jika anda tersilap.
| Situation | Correct control | Cost if you disable IPv6 instead |
|---|---|---|
| Exit has no IPv6, host does | Block IPv6 deliberately in the tunnel policy | Same visible result, no documentation of intent |
| Exit carries IPv6, host leaks | Route IPv6 into the tunnel and verify | You lose IPv6 reachability entirely |
| Access network is IPv6-only | Change nothing; use the tunnel's IPv6 | Machine loses connectivity completely |
Baris pertama ialah apa yang biasanya dimaksudkan orang, dan ia wajar. Klien yang hujung keluarnya tidak menyokong IPv6 tidak sepatutnya membiarkan trafik IPv6 asli hos keluar secara senyap, kerana itulah kebocoran tindanan berganda yang didokumenkan. Intinya ialah menyekatnya sebagai dasar yang diisytiharkan, bukan mematikan protokol dalam kernel. Hasil yang kelihatan sama dan hanya satu daripadanya boleh disemak kemudian.
Baris ketiga ialah tempat nasihat menyeluruh menjadi benar-benar berbahaya. Pengendali mudah alih dan sesetengah sambungan rumah menjalankan rangkaian IPv6-only dengan terjemahan untuk destinasi IPv4. Buang IPv6 di situ dan anda membuang satu-satunya pengangkutan yang ditawarkan rangkaian, yang menghasilkan gangguan jauh lebih teruk daripada yang sedang anda nyahpepijat.
Jika hujung keluar tiada IPv6, sekat dengan sengaja
Utamakan mekanisme klien itu sendiri, kerana ia terpakai tepat selagi terowong naik dan berundur apabila ia jatuh. OpenVPN mempunyai pilihan untuk ini, dan iptables mempunyai peraturan setara untuk klien lain:
block-ipv6
ip6tables -A OUTPUT -o eth0 -j REJECT --reject-with ipv6-port-unreachable
Arahan itu milik profil; peraturan itu milik tembok api yang boleh anda semak dan buang. Kedua-duanya gagal tertutup, yang anda mahukan, dan kedua-duanya kelihatan dalam diff konfigurasi, yang tidak berlaku pada sysctl kernel yang tertanam dalam skrip permulaan.
Catat mengapa ia ada. Peraturan menyekat tanpa komen akan dibuang oleh orang seterusnya yang memerlukan IPv6 untuk perkara lain, dan kemudian kebocoran itu kembali secara senyap.
Jika hujung keluar membawa IPv6, halakan laluan dan uji kedua-dua keluarga
Membawa IPv6 ialah jawapan yang lebih baik apabila pelayan menyokongnya, dan ia tidak jauh lebih sukar. Syaratnya ialah antara muka terowong mempunyai alamat dalam keluarga itu dan laluan lalai untuknya menunjuk ke dalam terowong dan bukan keluar dari antara muka fizikal:
ip -6 route get 2606:4700:4700::1111
ip -6 route show default
curl -6 -sS --max-time 6 https://ifconfig.co
curl -4 -sS --max-time 6 https://ifconfig.co
Carian laluan ialah ujian penentu: jika ia menamakan antara muka terowong, trafik IPv6 sedang dibawa. Dua panggilan curl kemudian mengesahkan apa yang dilihat setiap keluarga, dan membandingkannya ialah cara membuktikan kedua-dua laluan kini keluar melalui hujung keluar yang sama.
Jangan berhenti pada sambungan yang berjaya. Sambung semula terowong dan periksa sekali lagi, kerana laluan IPv6 yang ditolak boleh hilang semasa pembentukan semula jika pelayan menghantarnya hanya dalam konfigurasi awal. Kemudian periksa satu destinasi yang dikecualikan, kerana peraturan split-tunnel ialah tempat kedua-dua keluarga paling kerap berbeza.
Jika rangkaian akses hanya IPv6, biarkan ia
Sesetengah rangkaian hanya menyediakan IPv6 dan menjangka peranti mencapai perkhidmatan IPv4 melalui mekanisme terjemahan di pihak pengendali. Mematikan IPv6 pada mesin sedemikian bukan penambahbaikan keselamatan; ia membuang satu-satunya laluan ke apa sahaja. Itu gangguan yang anda timbulkan sendiri demi hasil ujian yang tiada siapa perlukan.
Gejala kesilapan ini tersendiri dan tidak menyenangkan: terowong kelihatan terbentuk, penyelesaian nama berfungsi, dan tiada apa yang dimuatkan. Jika anda melihatnya selepas perubahan IPv6, pulihkan tetapan itu serta-merta dan teruskan diagnosis di tempat lain.
Apa pun pilihan anda, kekalkan keputusan itu nyata dalam profil atau tembok api, ikatkannya pada apa yang benar-benar disokong hujung keluar, dan catat tingkah laku tindanan berganda yang diterangkan oleh perbincangan tindanan berganda RFC 7359 . Penyekatan yang diisytiharkan ialah dasar. Protokol yang dimatikan ialah jalan pintas yang tiada siapa boleh audit, dan dari halaman ujian kedua-duanya kelihatan serupa.