Divi objekti šūnu saitēs saskaras ar vienu un to pašu problēmu abos virzienos: neviens nevar pieņemt nepieprasītu IPv4 savienojumu, tāpēc neviens nevar spēlēt servera lomu tiešā tunelī. Strādājošā arhitektūra vidū ievieto sasniedzamu trešo pusi: katrs objekts zvana uz āru, un vidus pārsūta tikai to satiksmi, kuru jūs apstiprināt. Šis vidus var būt jūsu pārvaldīts maršrutētājs vai produkts, kas iepazīstina vienaudžus, un tas nav viens un tas pats. Tālāk minētās darbības ir sakārtotas tā, lai katra sniegtu pierādījumu, pirms nākamā no tā ir atkarīga.

Nevienu objektu nevar izsaukt, tāpēc abiem jāzvana uz āru

Apstipriniet ierobežojumu, pirms projektējat ap to. Ja operators WAN saskarnei piešķir privātu adresi, neviens porta pārsūtīšanas noteikums paša objekta maršrutētājā nepadarīs to sasniedzamu, jo tulkošana notiek augstāk. Tajā pašā saitē var būt publiska IPv6 adrese, un tā var pilnībā mainīt projektu, tāpēc pārbaude aptver abas saimes. Pierakstiet atbildi katram objektam, jo abiem reti ir identiski ierobežojumi, pat ja tie dala vienu operatoru.

Parastais šūnu gadījums izskatās kā adrese no operatora pārtulkotā diapazona ar noklusējuma maršrutu caur to. Tas nav defekts, kas jālabo; tas ir iemesls, kāpēc mezgls pastāv. Jūs meklējat jebkuru adresi, kuru trešā puse var sasniegt, objektam vispirms nepārrunājot.

Divas komandas atbild uz jūsu priekšā esošā objekta adresācijas jautājumu. Izpildiet tās objekta maršrutētājā, nevis klēpjdatorā aiz tā:

ip -4 addr show scope global
ip -6 addr show scope global

Kas iepazīstina vienaudžus un kas pārnēsā paketes

Iepazīstināšana un transportēšana ir atsevišķi darbi, ko produkti bieži apvieno, nenodarot robežu redzamu. Tikšanās mehānisms palīdz diviem vienaudžiem atrast kandidāta ceļu; relejs pārnēsā viņu paketes, kad tieša ceļa nav. Iepazīstināšanas pakalpojuma iegāde nedod maršrutētāju, un šī atšķirība nosaka, vai projektam vispār vajag mezglu.

Caurejošanai ir sava terminoloģija, un vārdi apraksta lomas, nevis garantijas. ICE specifikācija apraksta kandidātus un savienojamības pārbaudes, STUN apraksta vienu veidu, kā uzzināt par adrešu tulkošanu, un TURN apraksta pārsūtītu transportu lietojumprogrammām, kas to ievieš. Neviens no šiem mehānismiem neparādās parastā vārtejā, jo jūs to novirzījāt uz atklāšanas adresi. Pārbaudiet caurejošanu kā produkta iespēju un pieņemiet releju, līdz tests parāda pretējo.

Viens maršruts katram objektam, vienaudža īpašumā

Mezglam vajag vienu tuneli katram objektam, atsevišķu LAN prefiksu aiz katra un maršrutu katram prefiksam, kas nosauc tā īpašnieku. Piemērā mezgls ir 10.61.0.1, objekts A ir 10.61.0.11 ar LAN 10.60.10.0/24, un objekts B ir 10.61.0.12 ar LAN 10.60.20.0/24. Katrs maršruts zemāk norāda uz vienaudzi, kuram pieder prefikss, nevis uz tuneļa saskarni:

ip route add 10.60.10.0/24 via 10.61.0.11 dev wg0
ip route add 10.60.20.0/24 via 10.61.0.12 dev wg0
sysctl net.ipv4.ip_forward
ip route get 10.60.20.55 from 10.60.10.77

Pārsūtīšanai jābūt iespējotai, citādi paketes apstājas pie mezgla bez kļūdas, kas norādītu cēloni. Pēdējā komanda atbild uz īsto jautājumu, jo tā jautā, pa kuru ceļu pakete ietu no objekta A LAN uz objekta B LAN, avotu iekļaujot meklējumā. Meklējumu, kas nosauc tuneļa saskarni, uzskatiet par pierādījumu, bet to, kas nokrīt uz noklusējuma maršrutu, par trūkstošu maršrutu, nevis mīklu. Pēc tam apzināti ierobežojiet tranzītu, jo mezgls, kas pārsūta starp katru vienaudzi, pārvērš divus objektus plakanā tīklā, un jūsu domātā piekļuves politika vairs neattiecas.

Izlemiet arī, kur beidzas šifrēšana. Kad mezgls tur abus tuneļa galus, tās mašīnas operators un tā darba slodze pievienojas uzticēšanās un pieejamības modelim, un tās joslas platums kļūst par ceļa daļu.

Turiet katru kartējumu dzīvu caur operatoru

Katrs objekts sāk savu tuneli, un katram ir jāuztur tulkošanas kartējums dzīvs, citādi operators to aizmirst. Iniciējošās puses dzīvības ziņa saglabā šo kartējumu starp rokasspiedieniem. Ierobežojiet atļautos prefiksus ar mezgla adresi un attālo LAN, lai kompromitēts vienaudzis nevarētu pieprasīt prefiksu, kas tam nepieder:

[Peer]
PublicKey = <hub public key>
Endpoint = 192.0.2.10:51820
AllowedIPs = 10.61.0.1/32, 10.60.20.0/24
PersistentKeepalive = 25

Atspoguļojiet bloku otrā objektā ar tā paša attālo prefiksu, un pretojieties vēlmei atļaut visu tuneļa diapazonu. Rokasspiediens, kas apstājas un atsākas no jauna avota porta, ir beigušā kartējuma paraksts, un rokasspiediena laika zīmes ir pierādījums, ka tas notika. Intervāls, kas īsāks par operatora taimautu, novērš beigšanos, nevis labo to pēc tam. Kad operators maina savu tulkošanas uzvedību, gaidiet, ka šie laiki mainīsies kopā ar to.

Pierādiet abus virzienus, tad pierādiet atjaunošanos

Pārbaude ir virzīta, tāpēc ping no A uz B pierāda pusi projekta un neko par atgriešanās ceļu. Pārbaudiet atbildes ceļu ar to pašu avotu apzinošo meklējumu uz mezgla, pēc tam atkārtojiet testu no otras puses. Svaigi rokasspiedieni arī pieder pierādījumiem, jo tunelis, kas stundu bijis neaktīvs, var pārbaudīt vecu kartējumu:

wg show wg0 latest-handshakes
ping -c 3 10.60.20.55
traceroute -n 10.60.20.55

Pēc tam pārbaudiet gaidīto kļūmi, nevis vēlamo panākumu. Restartējiet viena objekta saiti un apstipriniet, ka tunelis atgriežas bez cilvēka pieskāriena nevienam galam, jo projekts, kuram pēc katras operatora izmaiņas vajag operatoru, nav pabeigts. Pierakstiet galveno ceļu, IPv6 alternatīvu, ja tāda ir, un uzvedību, kad mezgls nav pieejams. Mezgls tagad ir jūsu pieejamības modeļa daļa, tāpēc pierakstiet to, nevis atklājiet to pārtraukuma laikā.

Saistītie raksti