Vaša linija rute vraća se odbijena, a savjet koji pronalazite kaže da omogućite IP prosljeđivanje. Te dvije stvari stoje u različitim fazama problema. Prosljeđivanje odlučuje može li host prenositi pakete između sučelja; ono nema mišljenje o tome je li odredište koje ste upisali valjana mreža. Prvo popravite prefiks, jer prosljeđivanje neće spasiti adresu i masku koje se ne slažu.

Na što se parser zapravo žali

Odredište napisano kao adresa plus maska mora opisivati mrežu, a mreža počinje nulama host-bita. Kada adresa koju dajete još nosi vrijednost u dijelu za host, par je interno nedosljedan: 172.20.130.0 izgleda uredno jer završava nulom, ali nula u četvrtom oktetu nije jedina stvar koja je važna. Treći oktet je onaj koji ovdje drži zalutale bitove.

Alati tu nedosljednost rješavaju različito. Strogi parseri odbijaju liniju i imenuju bitove hosta. Blagi parseri maskiraju adresu i instaliraju nešto što niste tražili, što je gore, jer konfiguracija sada usmjerava raspon koji nikada niste namjeravali. Pythonov modul ipaddress nudi izbor izravno: strogo parsiranje mreže diže grešku, a strict=False maskira bitove hosta. Vaš klijent može biti strog, blag ili nedosljedan između verzija, pa čitajte poruku umjesto da vjerujete navici.

Prođite primjer ručno

Uzmite tunel koji treba dosegnuti 172.20.130.0 s maskom /20. /20 posuđuje četiri bita iz trećeg okteta, pa se taj oktet broji samo u koracima od 16: 0, 16, 32 i dalje do 240. Vrijednost 130 pada između 128 i 143, što znači da obuhvatna mreža počinje na 172.20.128.0, a ne na 172.20.130.0 s obrisanim zadnjim oktetom.

Zapisano, blok ide od 172.20.128.0 do 172.20.143.255 i drži 4,096 adresa. Slanje istih vrijednosti nestrogom parseru pokazuje zamjenu koju bi on izvršio u vaše ime:

$ 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

Odlučite koje odredište ste zapravo namjeravali

Odbijena linija obično krije jednu od tri namjere, a samo vi možete izabrati. Ako tunelu treba cijeli blok, upišite 172.20.128.0/20, kanonsku mrežnu adresu. Ako tunelu treba samo segment 130, maska je bila pogrešna i 172.20.130.0/24 je iskren oblik. Ako je cilj jedno računalo, ruta do IPv4 hosta je /32 i nikakva aritmetika maske nije uključena.

Svaka od njih odobrava različitu količinu prometa, i to je pravi razlog da ne širite masku dok se žalba ne zaustavi. /16 prihvaća liniju gotovo svugdje i šalje promet prema odredištima kroz koja nikada niste namjeravali usmjeravati kroz tunel. Napišite najuži prefiks koji odgovara namjeri, pa ga potvrdite prema sljedećem hopu koji očekujete, a ne prema parserovoj tišini.

Zašto prosljeđivanje nikada nije bilo rješenje

Odbijena ruta nikada ne stiže do puta prosljeđivanja, pa prebacivanje net.ipv4.ip_forward ne može promijeniti ishod. Ta postavka je važna kasnije, kada host mora propuštati pakete između sučelja, a njeno uključivanje prije nego što tablica bude ispravna mijenja samo to koja će faza sljedeća pasti.

Dvije druge stvari često budu okrivljene na istoj točki. Ruta može biti prihvaćena i ipak izgubiti od specifičnije rute, a firewall pravilo može odbaciti promet nakon ispravne pretrage. Držite faze odvojenima: sintaksa, instalacija, odabir, filtriranje. Rad na pogrešnoj fazi izgleda produktivno jer svaka promjena ponovno pokreće nešto.

Provjerite instaliranu rutu i put koji ona dobiva

Kada klijent prihvati liniju, pogledajte što je instalirao i koju rutu kernel bira za reprezentativnu adresu unutar bloka. Ako se instalirani prefiks razlikuje od napisanog, normalizator je djelovao u vaše ime.

Upitajte adresu člana kao i jednu izvan bloka, da usporedba bude smislena umjesto jedne umirujuće linije:

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

Treći upit treba pasti izvan tunela ako je vaš prefiks ispravan, a kada ne padne, ruta koju ste izgradili šira je nego što mislite. Zabilježite što je prefiks trebao pokrivati prije nego dotaknete sljedeću postavku, jer ruta koja se parsira i put koji radi ostaju odvojena zapažanja.

Povezani članci