Izslēgt IPv6, lai salabotu VPN noplūdi? Labāk izlemiet politiku
Link-local adrese nav noplūde, un globāls IPv6 maršruts arī nav. Vispirms izvēlieties starp bloķēšanu, pārvadīšanu un atstāšanu.
IPv6 diapazona adrese parādās testa lapā, tunelis to acīmredzami nepārvada, un populārākais interneta padoms ir izslēgt IPv6 visur. Šī komanda patiešām apklusina paneli. Taču tā arī noņem protokolu, no kura var būt atkarīgs piekļuves tīkls, un atstāj jūs bez priekšstata, vai adrese bija īsta noplūde, link-local saskarnes adrese vai risinātājs, kas dara savu darbu. Pareizo kontroli nosaka trīs nosacījumi, un tikai viens no tiem ved pie bloķēšanas.
Noskaidrojiet, ko rīks faktiski izmērīja
Biežākais viltus trauksmes signāls ir link-local adrese, kas sākas ar fe80: un pastāv katrā IPv6 atbalstošā saskarnē neatkarīgi no tā, vai iekārta sasniedz internetu IPv6 ceļā. Tā parādās saskarņu sarakstos un dažās lietotņu diagnostikās, un neko nepasaka par jūsu trafika ceļu.
Otrais viltus trauksmes signāls ir unikāla lokālā adrese fc00::/7, kas ir privāts diapazons, ko izmanto tīkla iekšienē. Rīks, kas izdrukā katru resursdatora adresi, to labprāt uzskaitīs blakus publiskajai. Kas lasa steigā, nosauc to par noplūdi un pēc tam pavada stundu ar problēmu, kuras nav.
Trešais nemaz nav viltus trauksmes signāls. Globāla adrese, kas sasniedz internetu ārpus tuneļa, ir īstā noplūde, un to ir vērts izmērīt pirms jebkāda lēmuma:
ip -6 addr show scope global
ip -6 route show default
curl -6 -sS --max-time 6 https://ifconfig.co
Ja pirmā komanda izdrukā globālu adresi un trešā atgriež publisku IPv6 adresi, kas nav tuneļa adrese, jums ir īsts ceļš ārpus tuneļa. Ja pirmā neizdrukā neko citu kā link-local ierakstus, noplūdes, ko labot, nekad nav bijis.
Kontroli nosaka trīs nosacījumi
Lēmums nav "IPv6 labs" vai "IPv6 slikts". Lēmums ir par to, kurā no trim situācijām jūs esat, un katrai ir cita pareizā atbilde ar citām izmaksām, ja kļūdāties.
| 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 |
Pirmā rinda ir tas, ko cilvēki parasti domā, un tas ir leģitīmi. Klientam, kura izeja neatbalsta IPv6, nevajadzētu klusi izlaist resursdatora pašu IPv6 trafiku, jo tā ir dokumentētā dubultās kaudzes noplūde. Būtība ir bloķēt to kā paziņotu politiku, nevis izslēgt protokolu kodolā. Redzamais rezultāts ir identisks, un tikai vienu no tiem var pārskatīt vēlāk.
Trešā rinda ir vieta, kur vispārīgais padoms kļūst aktīvi kaitīgs. Mobilo sakaru operatori un daži mājas savienojumi uztur IPv6-only tīklus ar tulkošanu IPv4 galamērķiem. Noņemiet tur IPv6, un jūs noņemsiet vienīgo transportu, ko tīkls piedāvā, kas rada daudz sliktāku pārtraukumu nekā tas, ko jūs atrisinājāt.
Ja izejai nav IPv6, bloķējiet to apzināti
Dodiet priekšroku paša klienta mehānismam, jo tas darbojas tieši tik ilgi, kamēr tunelis ir pacelts, un atkāpjas, kad tas krīt. OpenVPN tam ir opcija, un iptables ir līdzvērtīgs noteikums citiem klientiem:
block-ipv6
ip6tables -A OUTPUT -o eth0 -j REJECT --reject-with ipv6-port-unreachable
Direktīva pieder profilam; noteikums pieder ugunsmūrim, ko varat pārskatīt un noņemt. Abi neizdodas aizvērti, ko jūs vēlaties, un abi ir redzami konfigurācijas diffā, ko nevar teikt par palaišanas skriptā apraktu kodola sysctl.
Pierakstiet, kāpēc tas tur ir. Bloķēšanas noteikumu bez komentāra noņems nākamais cilvēks, kam IPv6 vajadzēs kam citam, un tad noplūde klusi atgriezīsies.
Ja izeja pārvada IPv6, maršrutējiet to un pārbaudiet abas saimes
IPv6 pārvadīšana ir labākā atbilde, ja serveris to atbalsta, un tas nav daudz grūtāk. Prasība ir, lai tuneļa saskarnei būtu adrese šajā saimē un tās noklusējuma maršruts būtu vērsts tuneļa iekšienē, nevis ārpus fiziskās saskarnes:
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šruta meklēšana ir izšķirošais tests: ja tā nosauc tuneļa saskarni, IPv6 trafiks tiek pārvadīts. Pēc tam divi curl izsaukumi apstiprina, ko redz katra saime, un to salīdzināšana ir veids, kā pierādīt, ka abi ceļi tagad iziet pa vienu un to pašu izeju.
Neapstājieties pie veiksmīga savienojuma. Pievienojiet tuneli no jauna un pārbaudiet vēlreiz, jo uzstumtais IPv6 maršruts var pazust atkārtotas izveides laikā, ja serveris to sūta tikai sākotnējā konfigurācijā. Pēc tam pārbaudiet vienu izslēgtu galamērķi, jo split-tunnel noteikumi ir vieta, kur abas saimes visbiežāk atšķiras.
Ja piekļuves tīkls ir tikai IPv6, atstājiet to mierā
Daži tīkli nodrošina tikai IPv6 un sagaida, ka ierīce sasniegs IPv4 pakalpojumus ar tulkošanas mehānismu operatora pusē. IPv6 izslēgšana šādā iekārtā nav drošības uzlabojums; tā noņem vienīgo ceļu uz jebko. Tas ir paša radīts pārtraukums par labu testa rezultātam, kas nevienam nebija vajadzīgs.
Šīs kļūdas simptoms ir raksturīgs un nepatīkams: šķiet, ka tunelis veidojas, vārdu izšķiršana darbojas, un nekas neielādējas. Ja to redzat pēc IPv6 izmaiņām, nekavējoties atjaunojiet iestatījumu un turpiniet diagnostiku citur.
Lai ko izvēlētos, turiet lēmumu skaidri profilā vai ugunsmūrī, saistiet to ar to, ko izeja patiešām atbalsta, un pierakstiet dubultās kaudzes uzvedību, ko apraksta RFC 7359 dubultās kaudzes diskusija . Paziņota bloķēšana ir politika. Izslēgts protokols ir apietais ceļš, ko neviens nevar auditēt, un no testa lapas tie izskatās vienādi.