Du objektai korinio ryšio linijose susiduria su ta pačia problema abiem kryptimis: nė vienas negali priimti neprašytos IPv4 jungties, todėl nė vienas negali atlikti serverio vaidmens tiesioginiame tunelyje. Veikianti architektūra viduryje pastato pasiekiamą trečiąją šalį: kiekvienas objektas skambina į išorę, o vidurys persiunčia tik tą srautą, kurį patvirtinate. Tas vidurys gali būti jūsų valdomas maršrutizatorius arba produktas, pristatantis partnerius, ir tai nėra tas pats. Toliau pateikti veiksmai išdėstyti taip, kad kiekvienas duotų įrodymą, prieš kitam nuo jo priklausant.

Nė vienas objektas negali būti iškvietas, todėl abu turi skambinti į išorę

Patvirtinkite apribojimą prieš projektuodami aplink jį. Jei operatorius WAN sąsajai duoda privatų adresą, joks prievado persiuntimas pačio objekto maršrutizatoriuje nepadarys jo pasiekiamo, nes vertimas vyksta aukščiau. Tame pačiame kanale gali būti viešas IPv6 adresas ir visiškai pakeisti projektą, todėl patikra apima abi šeimas. Užsirašykite atsakymą kiekvienam objektui, nes du retai turi vienodus apribojimus, net kai dalijasi operatoriumi.

Įprastas korinio ryšio atvejis atrodo kaip adresas iš operatoriaus išversto diapazono su numatytuoju maršrutu per jį. Tai ne gedimas, kurį reikia taisyti; tai priežastis, kodėl koncentratorius egzistuoja. Jūs ieškote bet kokio adreso, kurį trečioji šalis gali pasiekti objektui neprabilus pirmam.

Dvi komandos atsako į priešais jus esančio objekto adresavimo klausimą. Vykdykite jas objekto maršrutizatoriuje, o ne nešiojamajame kompiuteryje už jo:

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

Kas pristato partnerius ir kas neša paketus

Pristatymas ir transportavimas yra atskiri darbai, kuriuos produktai dažnai sujungia nepadarydami ribos matomos. Susitikimo mechanizmas padeda dviem partneriams rasti kandidatinį kelią; relė neša jų paketus, kai tiesioginio kelio nėra. Pristatymo paslaugos pirkimas neduoda maršrutizatoriaus, ir tas skirtumas nulemia, ar projektui apskritai reikia koncentratoriaus.

Skverbimuisi būdinga sava terminija, ir žodžiai apibūdina vaidmenis, o ne garantijas. ICE specifikacija apibūdina kandidatus ir ryšio patikras, STUN apibūdina vieną būdą sužinoti apie adresų vertimą, o TURN apibūdina perduodamą transportą programoms, kurios jį įgyvendina. Nė vienas iš šių mechanizmų nepasireiškia įprastuose vartuose, nes nukreipėte juos į atradimo adresą. Tikrinkite skverbimąsi kaip produkto galimybę ir darykite prielaidą apie relę, kol bandymas parodys priešingai.

Vienas maršrutas vienam objektui, priklausantis partneriui

Koncentratoriui reikia vieno tunelio vienam objektui, atskiro LAN prefikso už kiekvieno ir maršruto kiekvienam prefiksui, kuris nurodo jo savininką. Pavyzdyje koncentratorius yra 10.61.0.1, objektas A yra 10.61.0.11 su LAN 10.60.10.0/24, o objektas B yra 10.61.0.12 su LAN 10.60.20.0/24. Kiekvienas maršrutas žemiau nurodo partnerį, kuriam priklauso prefiksas, o ne tunelio sąsają:

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

Persiuntimas turi būti įjungtas, kitaip paketai sustoja prie koncentratoriaus be klaidos, kuri nurodytų priežastį. Paskutinė komanda atsako į tikrąjį klausimą, nes klausia, kuriuo keliu paketas eitų iš objekto A LAN į objekto B LAN, kai šaltinis įtrauktas į paiešką. Paiešką, kuri nurodo tunelio sąsają, laikykite įrodymu, o tą, kuri nukrenta į numatytąjį maršrutą, laikykite trūkstamu maršrutu, o ne mįsle. Tada sąmoningai apribokite tranzitą, nes koncentratorius, persiunčiantis tarp kiekvieno partnerio, paverčia du objektus plokščiu tinklu ir jūsų manymu turėta prieigos politika nustoja galioti.

Nuspręskite ir kur baigiasi šifravimas. Kai koncentratorius laiko abu tunelio galus, tos mašinos operatorius ir jos darbo krūvis patenka į pasitikėjimo ir prieinamumo modelį, o jos pralaidumas tampa kelio dalimi.

Palaikykite kiekvieną atvaizdavimą gyvą per operatorių

Kiekvienas objektas pradeda savo tunelį, ir kiekvienas turi palaikyti vertimo atvaizdavimą gyvą, kitaip operatorius jį pamiršta. Inicijuojančios pusės gyvybės pranešimas išsaugo tą atvaizdavimą tarp rankos paspaudimų. Apribokite leidžiamus prefiksus koncentratoriaus adresu ir nuotoliniu LAN, kad pažeistas partneris negalėtų reikalauti prefikso, kurio jam nepriklauso:

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

Atspindėkite bloką kitame objekte su jo paties nuotoliniu prefiksu ir atsispirkite norui leisti visą tunelio diapazoną. Rankos paspaudimas, kuris sustoja ir atsinaujina iš naujo šaltinio prievado, yra pasibaigusio atvaizdavimo parašas, o rankos paspaudimo laiko žymos yra įrodymas, kad tai įvyko. Trumpesnis už operatoriaus laiko limitą intervalas užkerta kelią pasibaigimui, o ne taiso jį vėliau. Kai operatorius pakeičia savo vertimo elgseną, tikėkitės, kad tie laikai pasikeis kartu.

Įrodykite abi kryptis, tada įrodykite atkūrimą

Tikrinimas yra kryptingas, todėl ping iš A į B įrodo pusę projekto ir nieko apie grįžimo kelią. Patikrinkite atsakymo kelią ta pačia šaltinį suprantančia paieška koncentratoriuje, tada pakartokite bandymą iš kitos pusės. Nauji rankos paspaudimai taip pat priklauso įrodymams, nes tunelis, kuris valandą buvo neaktyvus, gali tikrinti seną atvaizdavimą:

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

Tada bandykite gedimą, kurio tikitės, o ne sėkmę, kurios norite. Paleiskite iš naujo vieno objekto liniją ir patvirtinkite, kad tunelis grįžta be žmogaus prisilietimo prie bet kurio galo, nes projektas, kuriam po kiekvieno operatoriaus pakeitimo reikia operatoriaus, yra nebaigtas. Užrašykite pagrindinį kelią, IPv6 alternatyvą, kai ji yra, ir elgseną, kai koncentratorius nepasiekiamas. Koncentratorius dabar yra jūsų prieinamumo modelio dalis, todėl užrašykite tai, o ne atraskite per sutrikimą.

Susiję straipsniai