Vaša vrstica poti se vrne zavrnjena, nasvet, ki ga najdete, pa pravi, da omogočite posredovanje IP. Ti dve stvari sta na različnih stopnjah težave. Posredovanje odloča, ali lahko gostitelj premika pakete med vmesniki; nima mnenja o tem, ali je vneseni cilj veljavno omrežje. Najprej popravite predpono, ker posredovanje ne bo rešilo naslova in maske, ki se ne ujemata.

Zaradi česa se razčlenjevalnik v resnici pritožuje

Cilj, zapisan kot naslov plus maska, mora opisovati omrežje, omrežje pa se začne z ničlami zapolnjenimi biti gostitelja. Ko podani naslov še vedno nosi vrednost v delu za gostitelja, je par notranje neskladen: 172.20.130.0 je videti urejeno, ker se konča z ničlo, vendar ničla v četrtem oktetu ni edina pomembna stvar. Tukaj odvečne bite hrani prav tretji oktet.

Orodja to neskladnost obravnavajo različno. Strogi razčlenjevalniki vrstico zavrnejo in poimenujejo bite gostitelja. Blagi razčlenjevalniki naslov zamaskirajo in namestijo nekaj, česar niste zahtevali, kar je slabše, ker konfiguracija zdaj usmerja obseg, ki ga nikoli niste nameravali. Modul ipaddress v Pythonu ponuja izbiro neposredno: strogo razčlenjevanje omrežja sproži napako, strict=False pa zamaskira bite gostitelja. Vaš odjemalec je lahko strog, blag ali med različicami nedosleden, zato berite sporočilo, namesto da zaupate navadi.

Primer izračunajte ročno

Vzemite tunel, ki mora doseči 172.20.130.0 z masko /20. /20 si izposodi štiri bite iz tretjega okteta, zato se ta oktet šteje le v korakih po 16: 0, 16, 32 in naprej do 240. Vrednost 130 pade med 128 in 143, kar pomeni, da se obdajajoče omrežje začne pri 172.20.128.0, ne pri 172.20.130.0 z izničenim zadnjim oktetom.

Zapisano gre blok od 172.20.128.0 do 172.20.143.255 in vsebuje 4,096 naslovov. Če iste vrednosti damo nestrogemu razčlenjevalniku, pokaže zamenjavo, ki bi jo izvedel v vašem imenu:

$ python3 -c "import ipaddress; n=ipaddress.ip_network('172.20.130.0/20', strict=False); print(n, n.num_addresses)"
172.20.128.0/20 4096

Odločite se, kateri cilj ste pravzaprav imeli v mislih

Zavrnjena vrstica običajno skriva enega od treh namenov, izbrati pa morete le vi. Če tunel potrebuje celoten blok, napišite 172.20.128.0/20, kanonični omrežni naslov. Če tunel potrebuje le segment 130, je bila maska napačna in 172.20.130.0/24 je poštena oblika. Če je cilj en sam stroj, je pot do gostitelja IPv4 /32 in nobena aritmetika mask ni vključena.

Vsaka od njih dovoljuje drugačno količino prometa, in to je pravi razlog, da maske ne razširite, dokler se pritožba ne ustavi. /16 sprejme vrstico skoraj povsod in pošilja promet proti ciljem, ki jih nikoli niste želeli usmerjati skozi tunel. Napišite najožjo predpono, ki ustreza namenu, nato pa jo potrdite glede na naslednji skok, ki ga pričakujete, ne glede na molk razčlenjevalnika.

Zakaj posredovanje ni bilo nikoli rešitev

Zavrnjena pot nikoli ne doseže poti posredovanja, zato preklop net.ipv4.ip_forward ne more spremeniti izida. Ta nastavitev je pomembna pozneje, ko mora gostitelj prepuščati pakete med vmesniki, in vklop pred popravkom tabele spremeni le, katera stopnja bo naslednja spodletela.

Na isti točki sta pogosto obtoženi še dve stvari. Pot je lahko sprejeta in vseeno izgubi proti bolj specifični poti, požarni zid pa lahko po pravilnem iskanju zavrže promet. Stopnje držite ločene: sintaksa, namestitev, izbira, filtriranje. Delo na napačni stopnji je videti produktivno, ker vsaka sprememba nekaj znova zažene.

Preverite nameščeno pot in pot, ki jo zmaga

Ko odjemalec sprejme vrstico, poglejte, kaj je namestil in katero pot jedro izbere za reprezentativni naslov v bloku. Če se nameščena predpona razlikuje od zapisane, je v vašem imenu deloval normalizator.

Vprašajte za naslov člana in tudi za enega zunaj bloka, da bo primerjava smiselna in ne le ena pomirjujoča vrstica:

ip -4 route show 172.20.128.0/20
ip -4 route get 172.20.140.10
ip -4 route get 172.20.200.10

Tretja poizvedba bi morala pasti zunaj tunela, če je predpona pravilna, in ko ne pade, je pot, ki ste jo zgradili, širša, kot mislite. Zapišite, kaj naj bi predpona pokrivala, preden se dotaknete naslednje nastavitve, ker pot, ki se razčlenjuje, in pot, ki deluje, ostaneta ločeni opažanji.

Sorodni članki