Pasiekti spausdintuvą biuro vietiniame tinkle per ZeroTier narį skamba kaip viena taisyklė, bet iš tikrųjų tai trys sprendimai trijose skirtingose vietose. Overlay turi žinoti, kur yra vietinis tinklas, Linux mazgas turi būti pasirengęs persiųsti paketus, o vietinis tinklas turi žinoti, kaip atsakymą siųsti atgal. Įeinanti taisyklė, atidaranti prievadą vartuose, neliečia nė vieno iš jų. Tai netinkamas įrankis tinkamam mazgui.

Trys darbai, trys savininkai

Valdomas maršrutas priklauso ZeroTier tinklo konfigūracijai. Jis nariams praneša, kad priešdėlis pasiekiamas per konkretų nario adresą.

Persiuntimas priklauso Linux branduoliui ir tam, kas valdo jo ugniasienės politiką. Jis nusprendžia, ar paketas, atėjęs overlay tinklu, vėl išeis per fizinę sąsają. Mazgas, kuris nepersiunčia, po priėmimo paketą tyliai išmes. Siuntėjas mato skirtąjį laiką, o paslaugos žurnale nieko nepasirodo.

Grįžimo kelias priklauso vietiniam tinklui. Jo mazgai ir maršrutizatorius turi žinoti, kad overlay priešdėlis pasiekiamas per jūsų vartų vietinio tinklo adresą, arba kažkas turi išversti srautą, kad šis klausimas apskritai nekiltų.

Kiekvienas iš jų gali būti teisingas, kol kiti nepavyksta, ir todėl testas, kuris tik pingina vartus, nieko neįrodo apie už jų esančią paslaugą.

Nukreipkite valdomą maršrutą į narį

Pridėkite maršrutą norimam vietinio tinklo priešdėliui per vartų overlay adresą, o ne per jų vietinio tinklo adresą. Overlay adresas yra tas, kurį pasiekia kiti nariai; vietinio tinklo adresas turi prasmę tik laide.

Kad sprendimas veiktų, nariai turi priimti valdomus maršrutus, o jų pačių vietiniai tinklai neturi jau naudoti skelbiamo priešdėlio. Nuotolinis nešiojamas kompiuteris, namie esantis 192.168.60.0/24 tinkle, taip pat negali maršrutizuoti 192.168.60.0/24 per overlay.

Laikykite skelbiamą priešdėlį tokį siaurą, kokį leidžia užduotis. Skelbdami didesnį agregatą, kad paveiktumėte pirmenybę, galite pretenduoti ir į adresų erdvę, kuri jums nepriklauso, o atsiradęs konfliktas pasirodo įrenginiuose, prijungtuose prie abiejų tinklų. Tai taip pat gali paskatinti narį rinktis kelią, kuris niekur neveda. Laikykite maršrutą sąžiningą, o visa kita tegul padaro politika.

Užrašykite priešdėlį ir nario adresą tame pačiame užraše kaip ir ugniasienės taisyklės, nes dažniausia klaida yra maršrutas, nukreiptas į netinkamą narį.

Įjunkite tranzitą branduolyje

Prieš ką nors keisdami perskaitykite veikiančią persiuntimo reikšmę, o tada padarykite nustatymą nuolatiniu per mechanizmą, kurį jūsų sistema jau naudoja, o ne vienkartine komanda, kuri dingsta perkrovus.

Jei politiką valdo UFW, jo maršruto taisyklės išreiškia persiuntimą šaltinio, paskirties ir sąsajos porai. Jos atskiros nuo įeinančių taisyklių, kurios atidaro paslaugą pačiuose vartuose:

sysctl net.ipv4.ip_forward
sudo ufw route allow in on zt3f2a1c9d out on eth0 proto tcp to 192.168.60.20 port 443
sudo ufw status verbose

Sąsajos pavadinimas yra tikrasis overlay įrenginys tame mazge, kurį galite perskaityti su ip link; tai nėra fiksuota eilutė visuose diegimuose. Jei mazgas persiunčia pagal numatytuosius nustatymus, o UFW nėra kelyje, maršruto taisyklė bus ignoruojama ir svarbūs bus branduolio nustatymai.

Pasirinkite, kaip grįžta atsakymai

Išsaugant šaltinį, vietinio tinklo paslauga mato tikrąjį overlay adresą ir į jį atsako. Tam reikia maršruto vietinio tinklo mazge arba jo maršrutizatoriuje, nukreipiančio overlay priešdėlį į jūsų vartus, ir tai yra pakeitimas už Linux dėžės ribų.

Kai to maršruto pridėti negalima, apribotas šaltinio vertimas leidžia užklausai atrodyti taip, lyg ji būtų atėjusi iš vartų vietiniame tinkle. Tada atsakymai grįžta vietiškai ir vietinio tinklo maršrutizacijos keisti nereikia, tačiau paslaugos žurnaluose prarandamas pirminis šaltinis.

Apribokite vertimą overlay šaltiniu ir konkrečia vietinio tinklo paskirtimi. Versti viską, kas išeina per vietinio tinklo sąsają, yra plati versija, kuri vėliau nustebina kiekvieną taisykles skaitantį, be to, ji paslepia srautą, kuris turėjo būti užblokuotas.

Nė vienas variantas nesuteikia neprašyto priėjimo iš vietinio tinklo atgal prie savavališkų overlay narių. Jei to norima, tai atskira taisyklė su savo peržiūra.

Testuokite iš tikro nario

Prisijunkite iš kito nario, o ne iš vartų, ir paprašykite vienos leidžiamos paslaugos. Tada išbandykite paslaugą, kuri turi likti uždara, ir pakartokite abu testus po prisijungimo iš naujo ir po vartų perkrovimo.

Narys, kuris praneša ONLINE, arba sėkmingas ping į vartų overlay adresą, nepatvirtina nei maršruto, nei persiuntimo taisyklės, nei grįžimo kelio:

zerotier-cli listnetworks
ip -4 route get 192.168.60.20
sudo ufw status numbered

Antroji komanda parodo, kurią sąsają paketas naudotų vietinio tinklo mazgui, o trečioji – ar maršruto taisyklė egzistuoja tokia forma, kokios ketinote. Jei abi atrodo teisingai, o paslauga vis tiek baigiasi skirtuoju laiku, grįžimo kelias yra likęs įtariamasis.

Susiję straipsniai