Adresa z rozsahu IPv6 se objeví na testovací stránce, tunel ji zjevně nepřenáší a nejoblíbenější rada na internetu je vypnout IPv6 všude. Ten příkaz opravdu ztiší panel. Také ale odstraní protokol, na kterém může záviset přístupová síť, a nechá vás bez tušení, zda adresa byla skutečný únik, link-local adresa rozhraní, nebo resolver, který dělá svou práci. O správné kontrole rozhodují tři podmínky a jen jedna z nich vede k blokování.

Zjistěte, co nástroj skutečně změřil

Nejčastější falešný poplach je link-local adresa, která začíná fe80: a existuje na každém rozhraní podporujícím IPv6, ať už se stroj dostane na internet přes IPv6, nebo ne. Objevuje se ve výpisech rozhraní a v některé diagnostice aplikací a o cestě vašeho provozu neříká nic.

Druhý falešný poplach je jedinečná lokální adresa v fc00::/7, což je privátní rozsah používaný uvnitř sítě. Nástroj, který vypíše každou adresu hostitele, ji rád ukáže vedle veřejné. Kdo čte rychle, nazve to únikem a pak stráví hodinu problémem, který neexistuje.

Třetí není falešný poplach vůbec. Globální adresa, která se dostane na internet mimo tunel, je skutečný únik a stojí za to ji změřit, než cokoli rozhodnete:

ip -6 addr show scope global
ip -6 route show default
curl -6 -sS --max-time 6 https://ifconfig.co

Pokud první příkaz vypíše globální adresu a třetí vrátí veřejnou adresu IPv6, která není adresou tunelu, máte skutečnou cestu mimo tunel. Pokud první nevypíše nic než link-local záznamy, žádný únik k opravě nikdy neexistoval.

O kontrole rozhodují tři podmínky

Rozhodnutí není "IPv6 dobré" nebo "IPv6 špatné". Jde o to, ve které ze tří situací jste, a každá má jinou správnou odpověď s jinou cenou, když se spletete.

SituationCorrect controlCost if you disable IPv6 instead
Exit has no IPv6, host doesBlock IPv6 deliberately in the tunnel policySame visible result, no documentation of intent
Exit carries IPv6, host leaksRoute IPv6 into the tunnel and verifyYou lose IPv6 reachability entirely
Access network is IPv6-onlyChange nothing; use the tunnel's IPv6Machine loses connectivity completely

První řádek je to, co lidé obvykle myslí, a je legitimní. Klient, jehož výstup nepodporuje IPv6, by neměl tiše pouštět vlastní provoz IPv6 hostitele ven, protože to je dokumentovaný únik při duálním zásobníku. Smyslem je blokovat to jako vyhlášenou politiku, ne vypínat protokol v jádru. Viditelný výsledek je stejný a jen jeden z nich lze později zkontrolovat.

Třetí řádek je místo, kde se obecná rada stává aktivně škodlivou. Mobilní operátoři a některá domácí připojení provozují sítě IPv6-only s překladem pro cíle IPv4. Odstraňte tam IPv6 a odstraníte jediný transport, který síť nabízí, což způsobí mnohem horší výpadek než ten, který jste ladili.

Pokud výstup nemá IPv6, blokujte ho záměrně

Dejte přednost vlastnímu mechanismu klienta, protože platí přesně tehdy, dokud je tunel nahoře, a vrátí se, když spadne. OpenVPN na to má volbu a iptables má ekvivalentní pravidlo pro jiné klienty:

block-ipv6
ip6tables -A OUTPUT -o eth0 -j REJECT --reject-with ipv6-port-unreachable

Direktiva patří do profilu; pravidlo patří do firewallu, který můžete zkontrolovat a odstranit. Obě selhávají zavřeně, což je to, co chcete, a obě jsou vidět v diffu konfigurace, což sysctl jádra zahrabaný ve startovacím skriptu není.

Zapište, proč tam je. Pravidlo blokování bez komentáře odstraní příští člověk, který IPv6 potřebuje na něco nesouvisejícího, a pak se únik tiše vrátí.

Pokud výstup přenáší IPv6, směrujte ho a otestujte obě rodiny

Přenos IPv6 je lepší odpověď, když ho server podporuje, a není o moc těžší. Požadavek je, aby rozhraní tunelu mělo adresu v této rodině a výchozí trasa pro ni vedla do tunelu, ne z fyzického rozhraní:

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

Vyhledání trasy je rozhodující test: pokud pojmenuje rozhraní tunelu, provoz IPv6 se přenáší. Dvě volání curl pak potvrdí, co každá rodina vidí, a jejich srovnání je způsob, jak dokázat, že obě cesty nyní vycházejí stejným výstupem.

Nezastavujte se u úspěšného připojení. Znovu připojte tunel a zkontrolujte to znovu, protože zatlačená trasa IPv6 se může při opětovném navázání ztratit, pokud ji server posílá jen v počáteční konfiguraci. Pak zkontrolujte jeden vyloučený cíl, protože pravidla rozděleného tunelu jsou místem, kde se obě rodiny nejčastěji rozcházejí.

Pokud je přístupová síť jen IPv6, nechte ji být

Některé sítě poskytují jen IPv6 a očekávají, že zařízení dosáhne služeb IPv4 přes překladový mechanismus na straně operátora. Vypnutí IPv6 na takovém stroji není zlepšení bezpečnosti; odstraní jedinou cestu kamkoli. To je výpadek, který si způsobíte sami kvůli výsledku testu, který nikdo nepotřeboval.

Příznak této chyby je výrazný a nepříjemný: tunel se zdá navazovat, překlad jmen funguje a nic se nenačítá. Pokud to uvidíte po změně IPv6, okamžitě obnovte nastavení a pokračujte v diagnostice jinde.

Ať zvolíte cokoli, držte rozhodnutí explicitně v profilu nebo firewallu, spojte ho s tím, co výstup skutečně podporuje, a poznamenejte chování duálního zásobníku, které popisuje diskuse o duálním zásobníku v RFC 7359 . Vyhlášené blokování je politika. Vypnutý protokol je obchvat, který nikdo nemůže auditovat, a z testovací stránky vypadají stejně.

Související články