Jou roetelyn word verwerp, en die raad wat jy kry, sê jy moet IP-deurvoer aktiveer. Dié twee dinge staan op verskillende stadiums van die probleem. Deurvoer bepaal of 'n gasheer pakkette tussen koppelvlakke mag beweeg; dit het geen mening oor of die bestemming wat jy getik het 'n geldige netwerk is nie. Maak eers die voorvoegsel reg, want deurvoer sal nie 'n adres en masker red wat nie ooreenstem nie.

Waaroor die ontleder werklik kla

'n Bestemming wat as adres plus masker geskryf word, moet 'n netwerk beskryf, en 'n netwerk begin met nul-gasheerbisse. Wanneer die adres wat jy verskaf steeds 'n waarde in die gasheer-deel dra, is die paar innerlik teenstrydig: 172.20.130.0 lyk netjies omdat dit op nul eindig, maar nul in die vierde okted is nie die enigste ding wat saak maak nie. Die derde okted is die een wat hier los bisse bevat.

Gereedskap hanteer dié teenstrydigheid verskillend. Streng ontleders weier die lyn en noem gasheerbisse. Toegeeflike ontleders maskeer die adres af en installeer iets wat jy nie gevra het nie, wat erger is, want die konfigurasie roeteer nou 'n reeks wat jy nooit bedoel het nie. Python se ipaddress-module stel die keuse direk bloot: streng netwerkontleding gooi 'n fout, en strict=False maskeer die gasheerbisse uit. Jou kliënt kan streng, toegeeflik of tussen weergawes inkonsekwent wees, so lees die boodskap eerder as om 'n gewoonte te vertrou.

Werk die voorbeeld met die hand deur

Neem 'n tonnel wat 172.20.130.0 met 'n /20-masker moet bereik. 'n /20 leen vier bisse van die derde okted, so daardie okted tel net in stappe van 16: 0, 16, 32 en verder tot 240. Die waarde 130 val tussen 128 en 143, wat beteken die omringende netwerk begin by 172.20.128.0, nie by 172.20.130.0 met die laaste okted skoongemaak nie.

Uitgeskryf strek die blok van 172.20.128.0 tot 172.20.143.255 en hou 4,096 adresse. Om dieselfde waardes aan 'n nie-streng ontleder te voer, wys die vervanging wat dit namens jou sou doen:

$ 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

Besluit watter bestemming jy werklik bedoel het

Die verwerpte lyn verberg gewoonlik een van drie bedoelings, en net jy kan kies. As die tonnel die hele blok nodig het, skryf 172.20.128.0/20, die kanonieke netwerkadres. As die tonnel net die 130-segment nodig het, was die masker verkeerd en is 172.20.130.0/24 die eerlike vorm. As 'n enkele masjien die teiken is, 'n IPv4-gasheerroete is /32 en geen masker-rekenkunde is betrokke nie.

Elkeen van dié magtig 'n ander hoeveelheid verkeer, en dit is die werklike rede om nie die masker te verbreed totdat die klagte ophou nie. 'n /16 aanvaar die lyn byna oral en stuur verkeer na bestemmings wat jy nooit deur die tonnel wou roeteer nie. Skryf die nouste voorvoegsel wat by die bedoeling pas, en bevestig dit dan teen die volgende hop wat jy verwag, nie teen die ontleder se stilte nie.

Hoekom deurvoer nooit die oplossing was nie

'n Verwerpte roete bereik nooit die deurvoerpad nie, so om net.ipv4.ip_forward om te skakel kan nie die uitkoms verander nie. Daardie instelling maak later saak, wanneer die gasheer pakkette tussen koppelvlakke moet deurgee, en om dit aan te skakel voordat die tabel reg is, verander net watter stadium volgende faal.

Twee ander dinge word dikwels op dieselfde punt geblameer. Die roete kan aanvaar word en steeds teen 'n meer spesifieke roete verloor, en 'n vuurmuur-reël kan verkeer laat val ná 'n korrekte opsoeking. Hou die stadiums apart: sintaksis, installasie, keuse, filtering. Om aan die verkeerde stadium te werk voel produktief omdat elke verandering iets weer begin.

Kontroleer die geïnstalleerde roete en die pad wat dit wen

Sodra die kliënt die lyn aanvaar, kyk wat dit geïnstalleer het en watter roete die kern kies vir 'n verteenwoordigende adres binne die blok. As die geïnstalleerde voorvoegsel verskil van wat jy geskryf het, het 'n normaliseerder namens jou opgetree.

Vra 'n lid-adres sowel as een buite die blok, sodat die vergelyking betekenisvol is eerder as 'n enkele gerusstellende lyn:

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

Die derde navraag moet buite die tonnel val as jou voorvoegsel reg is, en wanneer dit nie doen nie, is die roete wat jy gebou het breër as wat jy dink. Teken op wat die voorvoegsel veronderstel was om te dek voordat jy die volgende instelling aanraak, want 'n roete wat ontleed en 'n pad wat werk bly aparte waarnemings.

Verwante artikels