Þegar þú bætir IPv6 forskeyti í síðu-til-síðu göng, fer pakkinn ekki þá leið sem skýringarmyndin bendir á. Staðbundna gáttin tekur allan IPv6 pakkann, dulkóðar hann og setur ytri IP haus fyrir framan þar sem vistfangsflokkurinn ræðst af endapunktsvistföngunum, ekki af því sem er inni. Fjarlæga gáttin fjarlægir þann ytri haus og sendir upprunalega pakkann áfram á LAN sitt, þar sem hann er aftur venjulegur IPv6 pakki. Ytri göng og innri umferð eru tvö aðskilin samskipti sem deila lykli, endapunktsdæmi og engu öðru.

Tveir hausar, tveir vistfangsflokkar

Í IPsec göngustillingu verður innri IPv6 pakkinn farmsvið ESP hauss. Ytri hausinn sem ber þann ESP pakka getur verið IPv4 eða IPv6, og hann fylgir local_addrs og remote_addrs. WireGuard gerir það sama með minni hátíðni: innri pakkinn er farmsvið UDP gagnsendingar til endapunkts jafningjans. Báðir láta innri hausinn ósnortinn, sem er ástæðan fyrir að hinni hliðinni tekst að beina honum eftir afhjúpun.

Leiðin milli staðanna sér aðeins UDP 4500 þegar IPsec notar NAT-traversal, eða UDP 51820 fyrir sjálfgefna WireGuard hlustun. Sérhver beinir á leiðinni getur verið aðeins IPv4 og IPv6 umferðin fer samt yfir, því hún birtist aldrei sem IPv6 pakki á þeirri leið. Það gefur skýra fyrstu skiptingu: tcpdump -ni eth0 udp port 51820 sýnir dulkuðu leiðina, tcpdump -ni wg0 ip6 sýnir innri umferðina. Upptekinn ytri straumur með hljóðlátri innri þýðir að kjarninn setur ekki IPv6 í göngin; það er beining eða stefna, ekki tengistíll.

Gáttin lækkar líka innri Hop Limit þegar hún sendir áfram, svo endapunktarnir teljast beinar á IPv6 leiðinni. Ytri hoppfjöldi og innri Hop Limit hreyfast óháð, og pakki sem deyr í fjarlægu gáttinni dó í framsendingu, ekki dulkóðun.

Selektorar og AllowedIPs eru leyfislistinn

IKEv2 semur um hvaða innri forskeyti child-SA má bera. Á strongSwan 5.9 og síðar lítur útlistun þeirra í swanctl.conf svona út:

children {
  net6 {
    local_ts  = 2001:db8:aa::/48
    remote_ts = 2001:db8:bb::/48
    mode = tunnel
    esp_proposals = aes256gcm16-prfsha384-ecp384
    start_action = trap
  }
}

Sleppa local_ts og remote_ts og strongSwan leiðir þau frá undirnetum viðmótsins sem það velur. Á dual-stack hýsli gefur sú stytting oft par með aðeins IPv4: SA kemst upp og IPv6 er hafnað áður en það nær ESP kóðanum. Að skrifa bæði forskeytin út gerir SA fært um að bera þau, og start_action = trap ræsir það á fyrsta samsvarandi pakka.

WireGuard hefur einn lista sem gegnir tveimur hlutverkum. Í jafningjablokkinni er AllowedIPs = 2001:db8:bb::/48, fd00:bb::/48 bæði leiðin sem er sett við sendingu og sían sem er beitt við móttöku: dulrakkaður pakki þar sem innri uppruni fellur utan lista jafningjans er látinn falla hljóðlaust. wg-quick bætir leið fyrir hverja færslu, svo jafningjablokkin hér að neðan þarf enga sérstaka ip -6 route skipun.

[Interface]
Address = 2001:db8:aa:ff::1/64, fd00:aa:ff::1/64
ListenPort = 51820

[Peer]
PublicKey = <site-b-public-key>
Endpoint = 203.0.113.20:51820
AllowedIPs = 2001:db8:bb::/48, fd00:bb::/48

Báðir listarnir verða að vera speglaðir: staður B samþykkir forskeyti staðar A sem fjarlægan selektor og beinir því til baka, og göngin virka aðeins þegar báðar áttir eru sammála. Ósamhverfur listi gefur einkennið sem tekur mestan tíma — heilbrigt handaband, teljarar sem hreyfast á annarri hlið, og ping frá A til B sem tekst á meðan ekkert frá B nær A.

Framsending, leiðir og endurkoma forskeytið

Linux sendir IPv6 ekki áfram fyrr en þú segir það, og stillingin gildir fyrir hvert nafnrými frekar en hvert viðmót:

sysctl -w net.ipv6.conf.all.forwarding=1
ip -6 route add 2001:db8:bb::/48 dev wg0
ip -6 route get 2001:db8:bb::10 from 2001:db8:aa::10

Önnur línan er sú sem fólk gleymir í leiðarháðum hönnunum. Stefnumiðuð IPsec setur XFRM stefnu sem passar við forskeytin, en leiðarháð uppsetning með vti6 eða WireGuard þarf raunverulega IPv6 leið sem bendir á það tæki. Geymdu sysctl undir /etc/sysctl.d/; endurræsing setur framsendingu annars hljóðlaust aftur á slökkt.

Framsending hefur hliðarverkun sem er þess virði að þekkja: kjarninn hunsar þá router advertisements nema net.ipv6.conf.<wan>.accept_ra sé 2, svo gátt þar sem WAN vistfang kemur með SLAAC getur misst sjálfgefna leið sína um leið og þú kveikir á framsendingu. Settu accept_ra = 2 á það viðmót í sömu skrá og leiðin lifir. Kjarni staðar B þarf líka að læra 2001:db8:aa::/48 frá gátt gönganna, með kyrrstæðri leið eða beiningarprotokolli yfir göngin, annars deyr svarið inni í eigin neti B.

Fjögurra þrepa próf sem staðsetur brotið

Vinna í þessari röð og stoppa við fyrsta þrepið sem mistekst, því hvert síðara þrep veltir á þeim fyrri.

  1. Selektorar: swanctl --list-sas ætti að sýna IPv6 forskeytis parið á child-SA, eða wg show wg0 allowed-ips fjarlæga forskeytið með nýlegu latest-handshakes.
  2. Kjarnaleið: ip -6 route get 2001:db8:bb::10 verður að svara með tæki gangsins, ekki WAN viðmótinu.
  3. Innri upptaka: tcpdump -ni wg0 ip6 meðan þú pingar milli raunverulegra LAN hýsla. Pakkar sem fara út en engir koma til baka benda á leið eða eldvegg B; engir pakkar yfirleitt benda aftur á þrep 1 eða 2.
  4. Áfangastaður: á B hýslinu staðfestir ss -6 -ltn að þjónustan hlusti á IPv6, og staðbundnir eldveggs-teljarar sýna hvort pakkinn var samþykktur eða látinn falla.

MTU á heima í sömu yfirferð. IPv6 beinar sundra ekki, svo of stór pakki er látinn falla og Packet Too Big kemur til baka til sendandans. Ef handaband og lítil ping virka en skráarflutningur stöðvast, minnkaðu farmsviðið þar til það fer í gegn: ping -6 -s 1400 -c 3 2001:db8:bb::10. WireGuard viðmót eru sjálfgefið 1420 bæti MTU og IPsec yfir IPv4 dregur meira af, svo betra er að setja innri MTU en að vona eftir path-MTU uppgötvun gegnum eldvegg sem sleppir ICMPv6.

Bilunarhamir sem líta út eins og eldveggsvandamál

Sá algengasti er alls ekki eldveggur: þjónustan bindur á 0.0.0.0 í stað ::, AAAA færslan er til, og biðlarinn fær skjóta höfnun yfir IPv6 sem dual-stack vafri faldar með því að falla til baka á IPv4. Ef aðeins sum forrit mistakast, athugaðu hlustandi fjölskylduna áður en þú snertir reglusafn.

Sá annar er ICMPv6 síun. Neighbor Discovery og Packet Too Big eru hluti af eðlilegri starfsemi, ekki greiningu, og stefna sem sleppir öllu ICMPv6 framleiðir göng sem tengjast, auðkenna og stöðvast síðan á öllu stærra en lítill pakki. Leyfðu tegundirnar sem leiðin veltir á og hafðu teljarana á svo slepping sé sýnileg.

Sá þriðji er forskeyti sem bætt er í göngin en aldrei í vistfangsáætlun staðarins sem á það, svo enginn beinir auglýsir það og ekkert hýsil getur svarað frá því. Byrjaðu með eitt forskeyti og eitt hýsilspar, sannaðu báðar áttir með fjórum þrepum og bættu síðan hinu við; bilað forskeyti verður áfram ein lína í stillingum í stað endurhönnunar. Eina opinbera tilvísunin sem er þess virði að halda opinni er RFC 8200, sem skilgreinir hausinn sem göngin bera.

Tengdir greinar