Kas lülitada IPv6 välja, et VPN-i leket parandada? Otsustage pigem poliitika
Link-local aadress ei ole leke ja globaalne IPv6 marsruut samuti mitte. Valige esmalt blokeerimise, kandmise ja puutumata jätmise vahel.
IPv6 vahemikust pärit aadress ilmub testlehel, tunnel seda selgelt ei kanna, ja interneti populaarseim nõuanne on IPv6 kõikjal välja lülitada. See käsk teeb paneeli tõesti vaikseks. Samuti eemaldab see protokolli, millest juurdepääsuvõrk võib sõltuda, ja jätab teid ilma igasuguse aimduseta, kas aadress oli tõeline leke, link-local liidese aadress või resolver, mis teeb oma tööd. Õige juhtimise otsustavad kolm tingimust ja ainult üks neist viib blokeerimiseni.
Tehke kindlaks, mida tööriist tegelikult mõõtis
Kõige tavalisem valealarm on link-local aadress, mis algab fe80: ja eksisteerib igal IPv6-võimelisel liidesel, olenemata sellest, kas masin pääseb IPv6 kaudu internetti. See ilmub liideste loendites ja mõnes rakenduse diagnostikas ega ütle teie liiklustee kohta midagi.
Teine valealarm on kordumatu kohalik aadress vahemikus fc00::/7, mis on privaatne vahemik, mida kasutatakse võrgu sees. Tööriist, mis trükib iga hosti aadressi, loetleb selle hea meelega avaliku kõrval. Kes kiiresti loeb, nimetab seda lekeks ja veedab siis tunni probleemiga, mida ei ole olemas.
Kolmas ei ole üldse valealarm. Globaalne aadress, mis jõuab internetti väljaspool tunnelit, on tõeline leke, ja seda tasub mõõta enne, kui midagi otsustate:
ip -6 addr show scope global
ip -6 route show default
curl -6 -sS --max-time 6 https://ifconfig.co
Kui esimene käsk trükib globaalse aadressi ja kolmas tagastab avaliku IPv6 aadressi, mis ei ole tunneli oma, on teil tõeline tee väljaspool tunnelit. Kui esimene ei trüki midagi peale link-local kirjete, ei olnud kunagi leket, mida parandada.
Juhtimise otsustavad kolm tingimust
Otsus ei ole "IPv6 hea" või "IPv6 halb". Otsus on see, millises kolmest olukorrast te olete, ja igal on erinev õige vastus ning erinev hind, kui eksite.
| 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 |
Esimene rida on see, mida inimesed tavaliselt mõtlevad, ja see on õigustatud. Klient, mille väljundil puudub IPv6 tugi, ei tohiks vaikselt lasta hosti enda IPv6 liiklust välja, sest see on dokumenteeritud topeltpinu leke. Mõte on blokeerida see väljakuulutatud poliitikana, mitte lülitada protokolli tuumas välja. Nähtav tulemus on identne ja ainult ühte neist saab hiljem kontrollida.
Kolmas rida on koht, kus üldine nõuanne muutub aktiivselt kahjulikuks. Mobiilioperaatorid ja mõned kodused ühendused käitavad IPv6-only võrke, kus IPv4 sihtkohtade jaoks on tõlge. Eemaldage seal IPv6 ja te eemaldate ainsa transpordi, mida võrk pakub, mis tekitab palju hullema katkestuse kui see, mida te silusite.
Kui väljundil IPv6 puudub, blokeerige see meelega
Eelistage kliendi enda mehhanismi, sest see kehtib täpselt nii kaua, kui tunnel on üleval, ja taandub, kui see langeb. OpenVPN on selleks valik ja iptablesil on teiste klientide jaoks samaväärne reegel:
block-ipv6
ip6tables -A OUTPUT -o eth0 -j REJECT --reject-with ipv6-port-unreachable
Direktiiv kuulub profiili; reegel kuulub tulemüüri, mida saate üle vaadata ja eemaldada. Mõlemad nurjuvad suletult, mida te tahate, ja mõlemad on konfiguratsiooni diffis nähtavad, mida käivituskripti maetud tuuma sysctl ei ole.
Kirjutage üles, miks see seal on. Blokeerimisreegli ilma kommentaarita eemaldab järgmine inimene, kes vajab IPv6 midagi muud, ja siis naaseb leke vaikselt.
Kui väljund kannab IPv6, marsruutige see ja testige mõlemat perekonda
IPv6 kandmine on parem vastus, kui server seda toetab, ja see pole palju raskem. Nõue on, et tunneli liidesel oleks selle perekonna aadress ja selle vaikemarsruut osutaks tunnelisse, mitte füüsilisest liidesest välja:
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
Marsruudiotsing on otsustav test: kui see nimetab tunneli liidest, kantakse IPv6 liiklust. Kaks curl-kutset kinnitavad siis, mida kumbki perekond näeb, ja nende võrdlemine on viis tõestada, et mõlemad teed väljuvad nüüd sama väljundi kaudu.
Ärge lõpetage edukal ühendusel. Ühendage tunnel uuesti ja kontrollige jälle, sest lükatud IPv6 marsruut võib taastamisel kaduda, kui server saadab selle ainult algses konfiguratsioonis. Seejärel kontrollige üht välistatud sihtkohta, sest split-tunnel reeglid on koht, kus kaks perekonda kõige sagedamini lahknevad.
Kui juurdepääsuvõrk on ainult IPv6, jätke see puutumata
Mõned võrgud pakuvad ainult IPv6 ja eeldavad, et seade jõuab IPv4 teenusteni operaatori poolse tõlkemehhanismi kaudu. IPv6 väljalülitamine sellisel masinal ei ole turvalisuse parandus; see eemaldab ainsa tee millenigi. See on ise tekitatud katkestus testitulemuse nimel, mida kellelgi vaja ei olnud.
Selle vea sümptom on iseloomulik ja ebameeldiv: tunnel näib loomavat, nimekontroll töötab ja miski ei laadi. Kui näete seda pärast IPv6 muudatust, taastage säte kohe ja jätkake diagnoosimist mujal.
Mida iganes valite, hoidke otsus selgelt profiilis või tulemüüris, siduge see sellega, mida väljund tegelikult toetab, ja märkige topeltpinu käitumine, mida kirjeldab RFC 7359 topeltpinu arutelu . Väljakuulutatud blokeering on poliitika. Väljalülitatud protokoll on möödasõit, mida keegi auditeerida ei saa, ja testlehelt näevad need identsed välja.