Isku xidhka IPv6 ee u dhexeeya laba goobood oo mara VPN jira
WAN ku habboon IPv4 oo keliya weli wuu qaadi karaa IPv6 gudaha. Raac dooriyayaasha, dariiqyada kernel, gudbinta iyo horgalaha soo-noqodka ee si aamusan u tuura jawaabaha.
Markaad ku darto horgale IPv6 tunnel goob-ilaa-goob ah, xirmadu ma socoto sida jaantusku soo jeediyo. Gateway maxalliga ah wuxuu qataa dhammaan xirmada IPv6, wuu sireeyaa, wuxuuna hor dhigaa cinwaan IP dibadeed oo qoyska cinwaankiisu uu go'aamiyo cinwaannada dhamaadka, ma aha waxa gudaha ku jira. Gateway fog ayaa ka saarayaa cinwaankaas dibadeed oo u gudbinayaa xirmada asalka ah LAN-keeda, halkaas oo ay mar kale tahay xirmad IPv6 caadi ah. Tunnel dibadeed iyo socodka gudaha waa laba wada-hadal oo kala duwan oo wadaaga fure, laba dhamaad iyo wax kale ma aha.
Laba cinwaan, laba qoys oo cinwaanno
Habka tunnel IPsec, xirmada IPv6 gudaha waxay noqotaa xamuulka ka dambeeya cinwaan ESP. Cinwaanka dibadeed ee qaadanaya xirmadaas ESP wuxuu noqon karaa IPv4 ama IPv6, wuxuuna raacaa local_addrs iyo remote_addrs. WireGuard waxay sidaas oo kale sameeysaa iyadoo xaflad yar: xirmada gudaha waa xamuulka datagram UDP ee dhanka dhamaadka lammaanaha. Labaduba waxay ka tagaan cinwaanka gudaha iyada oo aan la taaban, taasina waa sababta dhinaca fog uu ugu jiidan karo ka dib furitaanka.
Wadada u dhexeysa goobaha waxay arkaa kaliya UDP 4500 marka IPsec isticmaalo NAT traversal, ama UDP 51820 ee dhegeyste WireGuard caadi ah. Router kasta oo wadada ku yaal wuxuu noqon karaa IPv4 oo keliya socodka IPv6-na wuu gudbaa si kastaba, sababtoo ah waligiis uma muuqdo xirmad IPv6 wadadaas. Taasi waxay bixisaa kala-bixin ugu horreysa oo nadiif ah: tcpdump -ni eth0 udp port 51820 wuxuu tusayaa wadada sireysan, tcpdump -ni wg0 ip6 wuxuu tusayaa socodka gudaha. Qabasho dibadeed mashquul ah oo gudaha aamusan waxay ka dhigan tahay kernelku ma gelinayo IPv6 tunnelka; taasi waa habaynta dariiqa ama siyaasad, ma aha xaaladda xiriirka.
Gateway sidoo kale wuxuu hoos u dhigaa Hop Limit gudaha marka uu gudbinayo, sidaas darteed dhamaadka waxaa loo tiriyaa sidii router wadada IPv6. Tirada hops dibadeed iyo Hop Limit gudaha si madax-bannaan ayay u socdaan, xirmad ku dhinta gateway foga waxay ku dhimatay gudbinta, ma aha sireynta.
Dooriyayaasha iyo AllowedIPs waa liiska ogolaanshaha
IKEv2 waxay ka wada-hadashaa horgalayaasha gudaha ee child SA qaadi karo. On strongSwan 5.9 iyo wixii ka dambeeya, in lagu qoro swanctl.conf waxay u muuqataa sidan:
children {
net6 {
local_ts = 2001:db8:aa::/48
remote_ts = 2001:db8:bb::/48
mode = tunnel
esp_proposals = aes256gcm16-prfsha384-ecp384
start_action = trap
}
}
Ka tag local_ts iyo remote_ts oo strongSwan wuxuu ka soo saaraa subnet-yada interface-ka uu doorto. Martigeliyaha dual-stack wadada gaaban waxay inta badan soo saartaa laba IPv4 oo keliya: SA way kacdaa IPv6-na waa la diidayaa ka hor inta aan la gaarin koodka ESP. Qorista labada horgale waxay SA ka dhigaysaa mid u qalanta in ay qaado, start_action = trap wuxuuna kor u qaadayaa xirmada ugu horreysa ee u dhiganta.
WireGuard waxay leedahay hal liis oo qabta laba shaqo. Block-ka lammaanaha, AllowedIPs = 2001:db8:bb::/48, fd00:bb::/48 waa labadaba dariiqa la rakibay marka la dirayo iyo shaandheynta la isticmaalo marka la helo: xirmad la furfay oo isha gudaha ay ka baxdo liiska lammaanahaas si aamusan ayaa loo tuuraa. wg-quick wuxuu ku daraa dariiq galitaan kasta, sidaas darteed block-ka lammaanaha ee hoose uma baahna amar ip -6 route gaar ah.
[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
Labada liis waa inay isu ekaadaan: goobta B waxay aqbashaa horgalaha goobta A sida dooriye fog oo dib u jiidaa, tunnelkuna wuxuu shaqeeyaa kaliya marka labada jihada ay isku raacaan. Liis aan isu-ekaan waxay bixisaa calaamada waqtiga ugu badan qaata — handshake caafimaad qaba, tirinnada dhinac ka socda, iyo ping ka socda A ilaa B oo guuleysta iyadoo wax ka socda B aanu gaarin A.
Gudbinta, dariiqyada iyo horgalaha soo-noqodka
Linux ma gudbiyo IPv6 ilaa aad tidhaahdo, dejintuna waa namespace kasta ma aha interface kasta:
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
Sadarka labaad waa kan dadku illoobaan naqshadaha dariiqa ku salaysan. IPsec siyaasad ku salaysan wuxuu rakibaa siyaasad XFRM oo u dhiganta horgalayaasha, laakiin hab dariiq ku salaysan oo leh vti6 ama WireGuard wuxuu u baahan yahay dariiq IPv6 dhab ah oo u jeeda qalabkaas. Kaydi sysctl-ka hoos /etc/sysctl.d/; haddii kale dib u kicinta ayaa si aamusan u celinaysa gudbinta off.
Gudbintu waxay leedahay saameyn dhinac ah oo mudan in la ogaado: kernelku markaas wuu iska indhatiraa ogeysiisyada router-ka haddii aanay net.ipv6.conf.<wan>.accept_ra ahayn 2, sidaas darteed gateway oo cinwaanka WAN-kiisa ku yimaado SLAAC ayaa lumin kara dariiqa caadiga ah isla markii aad daarto gudbinta. Deji accept_ra = 2 interface-kaas isla faylka oo dariiquu sii noolaado. Xudunta goobta B sidoo kale waa inay barato 2001:db8:aa::/48 gateway-ka tunnelka, iyada oo loo marayo dariiq joogto ah ama borotokool jiidid tunnelka, haddii kale jawaabtu waxay ku dhimataa gudaha shabakada B lafteeda.
Hubin afar tallaabo ah oo go'itaanka gantaalaysa
Ka shaqee habkan oo jooji tallaabada ugu horreysa ee fashilma, waayo tallaabo kasta oo dambe waxay ku tiirsan tahay kuwii hore.
- Dooriyayaasha:
swanctl --list-saswaa inuu tusaa labada horgale ee IPv6 warning child SA, amawg show wg0 allowed-ipshorgalaha fog oo lehlatest-handshakesdhowaan. - Dariiq kernel:
ip -6 route get 2001:db8:bb::10waa inuu ku jawaabaa qalabka tunnelka, ma aha interface-ka WAN. - Qabasho gudaha:
tcpdump -ni wg0 ip6inta aad ping ku dhexeysa martigeliyayaasha LAN dhabta ah. Xirmado baxa laakiin aan midna soo noqon waxay u jeedaan dariiqa ama firewall-ka B; xirmado gabi ahaanba ma jiraan oo dib u jeeda tallaabada 1 ama 2. - Meesha: martigeliyaha B,
ss -6 -ltnwuxuu xaqiijinayaa in adeeggu dhegeysto IPv6, tirinnada firewall-ka maxalliga ahna waxay tusayaan in xirmada la aqbalay ama la tuuray.
MTU waxay ku jirtaa isla wareegga. Routers-ka IPv6 ma kala qoqdaan, sidaas darteed xirmad aad u weyn waa la tuuraa Packet Too Big-na wuxuu ku soo noqdaa dirayaha. Haddii handshake iyo ping yar ay shaqeeyaan laakiin wareejinta faylku istaagto, yaree xamuulka ilaa uu dhaafo: ping -6 -s 1400 -c 3 2001:db8:bb::10. Interfaces-ka WireGuard waxay caadi ahaan leeyihiin MTU 1420 byte IPsec-na IPv4 korkiisa wuxuu ka gooyaa wax badan, sidaas darteed dejinta MTU gudaha ayaa ka fiican rajada helitaanka MTU wadada iyada oo loo marayo firewall tuuraya ICMPv6.
Xaaladaha guuldarrada ee u eg dhibaatooyinka firewall
Kan ugu badan ma aha firewall haba yaraatee: adeeggu wuxuu ku xidhan yahay 0.0.0.0 halkii ::, diiwaanka AAAA waa jiraa, macmiilku wuxuu helaa diidmo degdeg ah IPv6 oo browser dual-stack ku qariyo isagoo ku noqonaya IPv4. Haddii kaliya barnaamijyada qaar fashilmaan, hubi qoyska dhegeysta ka hor inta aadan taaban go'an sharciyo.
Kan labaad waa shaandhaynta ICMPv6. Neighbor Discovery iyo Packet Too Big waa qayb ka mid ah hawlgalka caadiga ah, ma aha baaritaan, siyaasad tuuraya dhammaan ICMPv6-na waxay soo saartaa tunnel isku xidha, xaqiijiya, ka dibna istaaga wax kasta oo ka weyn xirmad yar. Oggolow noocyada wadadu ku tiirsan tahay oo ka tag tirinnada daaran si tuuriddu u muuqato.
Kan saddexaad waa horgale lagu daray tunnelka laakiin aan waligiis lagu darin qorshaha cinwaannada goobta iska leh, sidaas darteed ma jiro router ku dhawaaqaya mana jiro martigeliyaha ka jawaabi kara. Ku bilow hal horgale iyo hal laba martigeliyeyaal, caddee labada jihada afar tallaabo, ka dibna ku dar inta kale; horgale jaban wuxuu ahaanayaa hal sadar oo ku jira habeyn ee ka duwan dib u naqshadeyn. Tixraaca rasmiga ah ee keliya ee mudan in la hayo furan waa RFC 8200, kaas oo qeexaya cinwaanka tunnelku qaado.