Maršrutu tabula rāda noklusējuma maršrutu caur ZeroTier saskarni, tīkls ziņo, ka ir tiešsaistē, un pārlūks joprojām iziet no vietējās ISP adreses. Šī kombinācija ir izplatīta, un tā nav klienta kļūda. Noklusējuma maršruts tikai norāda, kur paketēm jāiet; otrā galā kaut kam tās jāpārsūta un jātulko. Trim atsevišķām daļām jābūt patiesām, pirms izejas mezgls darbojas.

Maršruts pastāv, bet nekas neiziet

Vispirms pārbaudiet klienta maršrutu tabulu. Rinda kā default via 10.147.20.5 dev zt0 pierāda, ka maršruts tika instalēts, nevis to, ka galamērķis pieņems trafiku. Nākamajam lēcienam jābūt dalībniekam, kas ir gatavs un spējīgs to pārsūtīt.

Ja tas pats pieprasījums joprojām iziet caur fizisko saskarni, klients maršrutu nav instalējis vai ir instalējis to ar metriku, kas zaudēja vietējam noklusējumam. Ja pieprasījums pazūd pēc maršruta instalēšanas, izejas dalībnieks saņem paketes un nespēj tās pārsūtīt vai tulkot. Klients, kas saglabā fizisko noklusējumu, vispār nesūta paketi uz izeju.

Šī atšķirība nosaka, kur strādāt. Publiskās adreses salīdzināšana pirms un pēc izmaiņām atdala maršrutu, kas nekad netika izmantots, no tā, kas tika izmantots un atmests, un tai vajadzīga viena komanda, nevis visas konfigurācijas pārskatīšana. Veiciet salīdzināšanu pirms kaut kā cita maiņas, lai abi rezultāti nāktu no viena sākuma stāvokļa.

Trīs daļas, kurām visām jābūt patiesām

Izeja ir ķēde, un vājākais posms nosaka simptomu. Tālāk esošajā tabulā posmi uzskaitīti tādā secībā, kādā tie parasti neizdodas.

PartWhere it livesWhat a failure looks like
Forwarding and NATExit node kernel and firewallTraffic arrives, no reply
Managed default routeZeroTier network controllerNo default via the tunnel on the member
Client acceptanceMember's per-network settingRoute offered but not installed
DNS behaviorClient resolver configurationPages fail by name, IP works

Pirmā rinda ir tas, ko slēpj opcijas nosaukums. Dalībnieks kļūst par izeju tikai tad, kad tā kodols pārsūta paketes starp ZeroTier saskarni un interneta virzienā vērsto saskarni, un kad atbildes ceļš tiek iztulkots atpakaļ uz tuneli. Bez šīs pārsūtīšanas dalībnieks ir partneris, nevis vārteja.

Kontrollera rinda ir atļauja, nevis konfigurācija. 0.0.0.0/0 izziņošana caur dalībnieku katram klientam pasaka, kur ir izeja; tas nepadara dalībnieku spējīgu pārvadāt trafiku. Tas arī nepārbauda, vai dalībniekam ir strādājošs ceļš uz internetu. ZeroTier izejas mezgla dokumentācija aptver to pašu atdalījumu starp mezglu, maršrutu un klientu.

Konfigurējiet izejas mezglu pārsūtīšanai un tulkošanai

Iespējojiet IPv4 pārsūtīšanu pastāvīgi, pēc tam pievienojiet avota NAT trafikam, kas atstāj WAN saskarni. Filtra noteikumiem jāatļauj pārsūtītā plūsma abos virzienos, jo pārsūtīšana un tulkošana ir atsevišķi no atļaujas:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o zt0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Aizstājiet zt0 un eth0 ar nosaukumiem uz resursdatora; noteikums, kas saglabāts parauga saskarnei, neizseko paketes reālā saskarnē. Padariet izmaiņas pastāvīgas caur ugunsmūra pārvaldnieku, kuram pieder noteikumi, jo komanda interaktīvā čaulā pazūd nākamajā pārstartēšanā.

Ja resursdators palaiž ugunsmūra pārvaldnieku, piemēram, UFW vai firewalld, pievienojiet noteikumus caur šo pārvaldnieku, nevis kraujiet iptables rindas tam blakus. Divi īpašnieki, kas rediģē vienas un tās pašas ķēdes, rada politiku, kas atkarīga no palaišanas secības. Secība ir svarīga, kad pārvaldnieks ģenerē savas ķēdes. Pārbaudiet no klienta pēc pārvaldnieka pārlādes, nevis pirms tam.

Izziņojiet maršrutu un pieņemiet to klientā

Tīkla kontrolierī pievienojiet pārvaldītu maršrutu 0.0.0.0/0, kura nākamais lēciens ir izejas dalībnieka ZeroTier adrese. Pēc tam tajā dalībniekā, kam tas jāizmanto, atļaujiet šī tīkla pārrakstīšanu. Atļauja ir lokāla: tā nepārkonfigurē citus dalībniekus un nemaina kontrolieri.

zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1

Pēdējai komandai jāziņo ZeroTier saskarne un izejas dalībnieka adrese. Ja tā joprojām ziņo fizisko saskarni, maršruta trūkst vai konkurējošam noklusējumam ir labāka metrika.

Turiet iestatījumu ierobežotu tīklā, kuram tas nepieciešams. Noklusējuma maršruta pieņemšanas iespējošana globāli vai tīklā, kuram jānodrošina tikai privāts apakštīkls, sūta trafiku caur izeju, kas tam nekad nav bijusi paredzēta.

Pārbaudiet izeju un apskatiet citas adrešu saimes

Pieprasiet publisku adresi no pakalpojuma, kas ziņo avotu, un salīdziniet to ar izejas mezgla WAN adresi. Pēc tam ielādējiet vietni pēc nosaukuma, lai apstiprinātu, ka DNS joprojām atrisina, un pārbaudiet vienu svarīgu lietojumprogrammu, nevis tikai pārlūku.

Klientam ar dubulto steku var turpināt izmantot savu vietējo IPv6 ceļu, kamēr IPv4 iziet caur ZeroTier. Ja mērķis ir paslēpt vai kontrolēt visu trafiku, nepieciešams atsevišķs ::/0 maršruts un IPv6 pārsūtīšana izejā, un IPv4 tests par tiem neko nepasaka.

Linux apgrieztā ceļa filtrēšana var arī nomest derīgu izejas trafiku klientā. ZeroTier dokumentē rp_filter apsvērumu dalībniekiem; mainiet šo iestatījumu apzināti un tikai pēc maršruta un NAT apstiprināšanas, nevis kā pirmo eksperimentu.

Ja prasība ir piekļuve NAS vai vienam biroja apakštīklam, pārvaldīts maršruts šim prefiksam ir mazāka un drošāka izmaiņa nekā pilna izeja. Visas pārlūkošanas sūtīšana caur citu ierīci ir citāds lēmums nekā sasniegt vienu privātu resursu, un tas pelnījis atsevišķu pārskatīšanu.

Saistītie raksti