Sülearvutil on IPv6-aadress, tunnel töötab IPv4 peal ja ometi ebaõnnestub iga IPv6-test. Või veel hullem: test õnnestub ja liiklus väljus teenusepakkuja teed pidi, jõudmata kunagi tunnelisse. Mõlemad tulemused taanduvad ühele puuduvale otsusele: keegi ei andnud ruuterile eesliidet, mida see saaks klientide poole marsruutida. Teekonna läbikäimine kliendist väljapoole leiab, milline tükk puudub.

Alusta sealt, kus klient asub

Vaata klienti enne, kui serverit puudutad. ip -6 addr peaks näitama tunneliaadressi poolist ja ip -6 route peaks näitama suunatud eesliidet, mis osutab tunneliseadmele. Kui aadress on olemas, aga marsruuti pole, on push puudu või jättis klient selle tähelepanuta. Kui kumbagi pole, ei määranud server üldse midagi.

Seejärel kontrolli, mida klient välismaailmast arvab. Tunneli kaudu minev vaikimisi marsruut nõuab kogu IPv6-liiklust, samas kui marsruut 2000::/3 jaoks nõuab ainult globaalset unicasti. Mõlemad võivad olla õiged ja vastavad erinevatele lekke küsimustele.

Kliendil, kellel pole üldse IPv6 vaikimisi marsruuti, ebaõnnestub iga avalik test, kuigi tunnel ise on täiesti terve. See on poliitika lünk, mitte katkine tunnel.

Kontrolli pooli, mida server tegelikult marsruutida suudab

Server saab määrata ainult eesliitest, mida ta tegelikult kontrollib. Kui teenusepakkuja delegeerib /56, jäta tunnelile üks /64 ja ülejäänu LAN-ile. Kui pakkuja annab WAN-il vaid ühe /64 ega marsruudi enam midagi, jäta LAN-i eesliide rahule ja anna tunnelile unikaalne lokaalne vahemik, leppides sellega, et klientidel puudub globaalne väljapääs.

Pool ja push kuuluvad kokku. server-ipv6 2001:db8:80:10::/64 määrab aadresse ja push "route-ipv6 2000::/3" ütleb klientidele, mida tunnelisse saata. 2000::/3 push katab globaalse unicasti ja jätab link-local ning multicast vahemikud tunnelist välja.

Kirjuta valitud eesliide juurutuskirjesse. Järgmine, kes teenusepakkuja üleandmist muudab, peab teadma, millise /64 tunnel juba hõivab.

Lülita teise perekonna jaoks edastus sisse

IPv4 edastus ei tähenda IPv6 edastust. Määra net.ipv6.conf.all.forwarding=1 ja peegelda kõik, mida IPv4 FORWARD-poliitika juba lubab. Ruuteril, mille FORWARD-ahel vaikimisi ära viskab, näeb puuduv reeglistik täpselt välja nagu surnud tunnel.

Käepigistus õnnestub, klient saab aadressi ja tagasi ei tule midagi. Lisa reeglid mõlema suuna ja WAN-i haru jaoks, sest tunnel, mis jõuab LAN-i, aga mitte internetti, ebaõnnestub kolmandas testis. Vaata pärast ebaõnnestunud katset ahela loendureid, sest reegel, mis kunagi ei sobitunud, on teine probleem kui see, mis sobitus ja ära viskas.

ip6tables -A FORWARD -i br0 -o tun0 -j ACCEPT
ip6tables -A FORWARD -i tun0 -o br0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
ip6tables -A FORWARD -i tun0 -o wan0 -j ACCEPT

Üks kõrvalmõju tabab neid, kes lõpuks tunneli süüdi teevad. Edastuse sisselülitamine paneb kerneli vahele jätma Router Advertisementi aadressikonfiguratsiooni, kui talle teisiti ei öelda, ja nii õpitud vaikimisi marsruut kaob koos sellega. Kas kinnita WAN-liidesele selgesõnaline vaikimisi marsruut või sea seal accept_ra teadlikult 2-le. Pärast kumbagi muudatust kinnita, et ruuteril on ikka veel kasutatav IPv6 tee välja, enne kui kliente uuesti testid.

Vasta naabrite avastamisele, kui ülalpool ei marsruudita

Ülalpool asuv riistvara käsitleb delegeeritud /64 mõnikord omaenda lingi osana ja keeldub marsruutimast ühtki alameesliidet VPN-karpi. Kui see juhtub, peab miski vastama naabriküsimustele iga kliendi aadressi kohta eraldi.

OpenVPN paljastab määratud aadressi client-connect-konksule, nii et kirjed saavad järgida tegelikku pooli käsitsi hoitava nimekirja asemel. Konks lisab ip -6 neigh add proxy $ifconfig_pool_remote_ip6 dev eth0 ja vastav client-disconnect-konks eemaldab selle. Ilma eemaldamiseta vananeb proxy-tabel ja hilisem klient võib pärida kirje aadressi kohta, mida ta kunagi ei saanud. Kinnita olek ip -6 neigh show proxy abil.

Käsitle proxyt ajutise lahendusena. Tunneli /64 jaoks ruuterile suunatud staatiline marsruut peab vastu kliendi muutustele ega vaja üldse privilegeeritud shelli konksu.

Jälgi teed väljapoole, hüpp hüpult

Testi väljapoole kolmes etapis: esmalt ruuteri tunneliaadress, seejärel LAN-i host ja kolmandaks avalik sihtkoht traceroute6 abil. Pooli tõestab esimene, edastuse ja LAN-i tulemüüri teine ning ülalpoolse kaudu tagasitee kolmas. Iga ebaõnnestumine kitsendab otsingu ühele seadmele, selle asemel et kogu disain uuesti avada.

Jälgi tunneli MTU-d, sest IPv6-ruuterid teel ei fragmenteeri sinu eest. Liiga suur MTU ilmneb packet-too-big-veana ja takerdunud TLS-ina, mitte puhta ebaõnnestumisena. Määra see selgesõnaliselt ja testi piiri lähedase koormusega.

Seotud artiklid