Reitti hylätty isäntäbittien takia? Etsi aiottu etuliite
Hylätty reittirivi johtuu yleensä isäntäbiteistä, ei edelleenlähetyksen ongelmasta. Selvitä tarkoitettu etuliite sen sijaan että levennät maskia, kunnes se hyväksytään.
Reittirivisi palaa hylättynä, ja löytämäsi neuvo käskee ottaa IP-edelleenlähetys käyttöön. Nämä kaksi asiaa ovat ongelman eri vaiheissa. Edelleenlähetys päättää, saako isäntä siirtää paketteja liitäntöjen välillä; sillä ei ole mielipidettä siitä, onko kirjoittamasi kohde kelvollinen verkko. Korjaa ensin etuliite, koska edelleenlähetys ei pelasta osoitetta ja maskia, jotka ovat ristiriidassa.
Mistä jäsennin oikeastaan valittaa
Osoitteena ja maskina kirjoitetun kohteen on kuvattava verkkoa, ja verkko alkaa nollatuista isäntäbiteistä. Kun antamasi osoite kantaa yhä arvon isäntäosassa, pari on sisäisesti ristiriitainen: 172.20.130.0 näyttää siistiltä, koska se päättyy nollaan, mutta nolla neljännessä oktetissa ei ole ainoa merkityksellinen asia. Kolmas oktetti on se, joka pitää täällä irtobittejä.
Työkalut käsittelevät tätä ristiriitaa eri tavoin. Tiukat jäsentimet hylkäävät rivin ja nimeävät isäntäbitit. Löyhät jäsentimet maskaavat osoitteen ja asentavat jotain, mitä et pyytänyt, mikä on pahempaa, koska kokoonpano reitittää nyt aluetta, jota et koskaan tarkoittanut. Pythonin ipaddress-moduuli tarjoaa valinnan suoraan: tiukka verkon jäsennys nostaa virheen ja strict=False maskaa isäntäbitit pois. Asiakkaasi voi olla tiukka, löyhä tai versioiden välillä epäjohdonmukainen, joten lue viesti sen sijaan että luottaisit tapaan.
Käy esimerkki läpi käsin
Ota tunneli, jonka on saavutettava 172.20.130.0 maskilla /20. /20 lainaa neljä bittiä kolmannesta oktetista, joten se oktetti lasketaan vain 16:n askelin: 0, 16, 32 ja edelleen 240 asti. Arvo 130 osuu 128:n ja 143:n väliin, mikä tarkoittaa, että ympäröivä verkko alkaa osoitteesta 172.20.128.0, ei osoitteesta 172.20.130.0 viimeinen oktetti nollattuna.
Kirjoitettuna lohko ulottuu osoitteesta 172.20.128.0 osoitteeseen 172.20.143.255 ja sisältää 4,096 osoitetta. Samojen arvojen syöttäminen ei-tiukalle jäsentimelle näyttää korvauksen, jonka se olisi tehnyt puolestasi:
$ 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 4096Päätä, mitä kohdetta todella tarkoitit
Hylätty rivi kätkee yleensä yhden kolmesta aikomuksesta, ja vain sinä voit valita. Jos tunneli tarvitsee koko lohkon, kirjoita 172.20.128.0/20, kanoninen verkko-osoite. Jos tunneli tarvitsee vain segmentin 130, maski oli väärä ja 172.20.130.0/24 on rehellinen muoto. Jos kohteena on yksi kone, IPv4-isäntäreitti on /32 eikä mitään maskiaritmetiikkaa tule mukaan.
Jokainen niistä sallii eri määrän liikennettä, ja se on todellinen syy olla leventämättä maskia, kunnes valitus lakkaa. /16 hyväksyy rivin melkein missä tahansa ja lähettää liikennettä kohteisiin, joita et koskaan halunnut reitittää tunnelin kautta. Kirjoita kapein aikomusta vastaava etuliite ja vahvista se sitten odottamaasi seuraavaan hyppyyn, ei jäsentimen hiljaisuuteen.
Miksi edelleenlähetys ei koskaan ollut ratkaisu
Hylätty reitti ei koskaan saavu edelleenlähetyspolulle, joten net.ipv4.ip_forward-asetuksen vaihtaminen ei voi muuttaa tulosta. Tämä asetus on tärkeä myöhemmin, kun isännän on välitettävä paketteja liitäntöjen välillä, ja sen kytkeminen päälle ennen taulukon oikeellisuutta muuttaa vain sitä, mikä vaihe epäonnistuu seuraavaksi.
Kahta muuta asiaa syytetään usein samassa kohdassa. Reitti voidaan hyväksyä ja se voi silti hävitä tarkemmalle reitille, ja palomuurisääntö voi pudottaa liikennettä oikean haun jälkeen. Pidä vaiheet erillään: syntaksi, asennus, valinta, suodatus. Väärässä vaiheessa työskentely tuntuu tuottavalta, koska jokainen muutos käynnistää jotain uudelleen.
Tarkista asennettu reitti ja polku, jonka se voittaa
Kun asiakas hyväksyy rivin, katso mitä se asensi ja minkä reitin ydin valitsee lohkon sisällä olevalle edustavalle osoitteelle. Jos asennettu etuliite eroaa kirjoittamastasi, normalisoija on toiminut puolestasi.
Kysy jäsenosoitetta sekä yhtä lohkon ulkopuolelta, jotta vertailu on mielekäs eikä vain yksi rauhoittava rivi:
ip -4 route show 172.20.128.0/20
ip -4 route get 172.20.140.10
ip -4 route get 172.20.200.10Kolmannen kyselyn pitäisi pudota tunnelin ulkopuolelle, jos etuliitteesi on oikein, ja kun ei putoa, rakentamasi reitti on laajempi kuin luulet. Kirjaa, mitä etuliitteen oli tarkoitus kattaa, ennen kuin kosket seuraavaan asetukseen, koska jäsentyvä reitti ja toimiva polku pysyvät erillisinä havaintoina.