IPv6-nı VPN sızmasını düzəltmək üçün söndürmək? Əvəzində siyasəti seçin
Link-local ünvan sızma deyil, qlobal IPv6 marşrutu da deyil. Əvvəlcə bloklamaq, daşımaq və toxunmamaq arasında seçim edin.
IPv6 aralığından bir ünvan test səhifəsində görünür, tunel onu açıq şəkildə daşımır və internetin ən məşhur məsləhəti IPv6-nı hər yerdə söndürməkdir. Bu əmr paneli həqiqətən susdurur. O, həm də giriş şəbəkəsinin asılı ola biləcəyi protokolu aradan qaldırır və ünvanın həqiqi sızma, link-local interfeys ünvanı yoxsa öz işini görən resolver olduğunu bilmədən sizi qoyur. Düzgün nəzarəti üç şərt müəyyən edir və yalnız biri bloklamaya gətirib çıxarır.
Alətin əslində nə ölçdüyünü müəyyənləşdirin
Ən çox rast gəlinən yanlış həyəcan link-local ünvandır; fe80: ilə başlayır və maşının IPv6 üzərindən internetə çıxıb-çıxmamasından asılı olmayaraq hər IPv6 qabiliyyətli interfeysdə mövcuddur. O, interfeys siyahılarında və bəzi tətbiq diaqnostikalarında görünür və trafik yolunuz haqqında heç nə demir.
İkinci yanlış həyəcan fc00::/7 daxilində unikal yerli ünvandır; bu, şəbəkə daxilində istifadə olunan özəl aralıqdır. Hostun saxladığı hər ünvanı çap edən alət onu sevinclə publik ünvanın yanında göstərəcək. Tez oxuyan hər kəs bunu sızma adlandırır və sonra mövcud olmayan problemə bir saat sərf edir.
Üçüncüsü heç də yanlış həyəcan deyil. Tuneldən kənarda internetə çıxan qlobal ünvan əsl sız madır və hər hansı qərar verməzdən əvvəl onu ölçməyə dəyər:
ip -6 addr show scope global
ip -6 route show default
curl -6 -sS --max-time 6 https://ifconfig.co
Birinci əmr qlobal ünvan çap edirsə və üçüncü tunelin ünvanı olmayan publik IPv6 ünvanı qaytarırsa, tuneldən kənarda həqiqi yolunuz var. Birinci yalnız link-local qeydlər çap edirsə, düzəldiləcək sızma heç vaxt olmayıb.
Nəzarəti üç şərt müəyyən edir
Qərar «IPv6 yaxşıdır» və ya «IPv6 pisdir» deyil. Qərar üç vəziyyətdən hansında olduğunuzdur və hər birinin səhv etdikdə fərqli dəyəri olan fərqli düzgün cavabı var.
| 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 |
Birinci sətir insanların adətən nəzərdə tutduğudur və qanunidir. Çıxışı IPv6 dəstəyi olmayan müştəri hostun yerli IPv6 trafikini səssizcə buraxmamalıdır, çünki bu, sənədləşdirilmiş ikili stek sızmasıdır. Məqsəd bunu bəyan edilmiş siyasət kimi bloklamaqdır, protokolu nüvədə söndürmək deyil. Görünən nəticə eynidir və yalnız biri sonradan nəzərdən keçirilə bilər.
Üçüncü sətir ümumi məsləhətin fəal zərərli olduğu yerdir. Mobil operatorlar və bəzi ev bağlantıları IPv4 təyinatları üçün tərcümə ilə IPv6-only şəbəkələr işlədir. Orada IPv6-nı silsəniz, şəbəkənin təklif etdiyi yeganə nəqliyyatı silirsiniz və bu, ayırd etdiyiniz nasazlıqdan qat-qat pis kəsinti yaradır.
Çıxışda IPv6 yoxdursa, onu qəsdən bloklayın
Müştərinin öz mexanizmini üstün tutun, çünki o, tunel qalxdıqca dəqiq tətbiq olunur və düşəndə geri qayıdır. OpenVPN bunun üçün seçimə malikdir və iptables digər müştərilər üçün ekvivalent qaydaya malikdir:
block-ipv6
ip6tables -A OUTPUT -o eth0 -j REJECT --reject-with ipv6-port-unreachable
Direktiva profildə olmalıdır; qayda isə nəzərdən keçirib silə biləcəyiniz firewall-da. Hər ikisi bağlı vəziyyətdə uğursuz olur, istədiyiniz də budur, və hər ikisi konfiqurasiya fərqində görünür; başlanğıc skriptində basdırılmış nüvə sysctl-i isə yox.
Onun niyə orada olduğunu qeyd edin. Şərhi olmayan bloklama qaydasını IPv6-nı əlaqəsiz bir şey üçün lazım edən növbəti şəxs silir və sonra sızma sakitcə qayıdır.
Çıxış IPv6 daşıyırsa, onu marşrutlaşdırın və hər iki ailəni sınaqdan keçirin
IPv6 daşımaq server dəstəklədikdə daha yaxşı cavabdır və çox da çətin deyil. Tələb budur ki, tunel interfeysinin həmin ailədə ünvanı olsun və onun defolt marşrutu fiziki interfeysdən çıxmaq əvəzinə tunelə yönəlsin:
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
Marşrut axtarışı həlledici sınaqdır: tunel interfeysini göstərirsə, IPv6 trafiki daşınır. Sonra iki curl çağırışı hər ailənin nə gördüyünü təsdiqləyir və onları müqayisə etmək hər iki yolun artıq eyni çıxışdan getdiyini sübut etməyin yoludur.
Uğurlu bağlantıda dayanmayın. Tuneli yenidən qoşun və yenidən yoxlayın, çünki server onu yalnız ilkin konfiqurasiyada göndərirsə, ötürülən IPv6 marşrutu yenidən qurulma zamanı itə bilər. Sonra bir istisna edilmiş təyinatı yoxlayın, çünki split-tunel qaydaları iki ailənin ən çox fərqləndiyi yerdir.
Giriş şəbəkəsi yalnız IPv6-dırsa, ona toxunmayın
Bəzi şəbəkələr yalnız IPv6 təqdim edir və cihazın IPv4 xidmətlərinə operator tərəfindəki tərcümə mexanizmi ilə çatmasını gözləyir. Belə maşında IPv6-nı söndürmək təhlükəsizlik yaxşılaşdırması deyil; hər şeyə gedən yeganə marşrutu silir. Bu, heç kimə lazım olmayan test nəticəsi üçün özünə vurulan kəsintidir.
Bunu səhv etməyin simptomu fərqli və xoşagəlməzdir: tunel qurulur, ad həlli işləyir və heç nə yüklənmir. IPv6 dəyişikliyindən sonra bunu görürsünüzsə, parametri dərhal bərpa edin və diaqnostikanı başqa yerdə davam etdirin.
Nə seçsəniz də, qərarı profildə və ya firewall-da açıq saxlayın, onu çıxışın həqiqətən dəstəklədiyi ilə bağlayın və RFC 7359 ikili stek müzakirəsinin təsvir etdiyi ikili stek davranışını qeyd edin. Bəyan edilmiş blok siyasətdir. Söndürülmüş protokol heç kimin audit edə bilmədiyi bir dolanışdır və onlar test səhifəsindən eyni görünür.