Linux EHOSTUNREACH OpenVPN:n kanssa: mikä seuraava hyppy epäonnistui?
EHOSTUNREACH voi tulla eksplisiittisestä saavuttamattomasta reitistä, kuolleesta naapurista tai etäraportista. Lue valittu reitti ja seuraava hyppy ennen kuin kosket salaukseen.
EHOSTUNREACH on yhtä usein paikallinen päätös kuin etävika. Ydin voi hylätä paketin, koska reitti sanoo kohteen olevan saavuttamaton, koska Ethernetin seuraava hyppy ei koskaan vastannut, tai koska ICMP host-unreachable -raportti saapui kauempaa polulta. Jokainen lähde elää eri taulussa tai välimuistissa, ja jokainen korjataan eri paikassa. Lue valittu reitti ja seuraavan hypyn tila ennen kuin kosket salauksiin tai asennat tunnelin uudelleen.
Valitse osoite ja nimiavaruus, joita asiakas todella käyttää
Aloita kiinnittämällä kohde ja verkkonimiavaruus, joka tuotti virheen. VPN-asiakas voi toimia omassa nimiavaruudessaan, ja oletusnimiavaruudesta tehty haku konsultoi toista reititystaulua, jossa on eri käytäntösäännöt.
Haun on käytettävä samaa lähde-, merkki- ja taulukontekstia kuin epäonnistuvan sovelluksen, tai se saattaa vastata kysymykseen, jota kukaan ei esittänyt. Havainnollistavalle IPv4-vertaiselle vain luku -tarkistukset ovat:
ip -4 route get 198.51.100.25
ip -4 neigh show 198.51.100.1
ip -4 route show table all | grep -w unreachable
Hallinnollisesta kuoresta saatu tulos todistaa vain, mitä se kuori tekisi. Jos asiakas asettaa palomuurimerkin tai sitoutuu VRF:ään, toista haku vastaavalla merkillä tai VRF:n sisällä ja vertaa valittua reittiä ja seuraavaa hyppyä. Ensimmäinen vahvistettava osoite on profiilin vertaisosoite, ei klusteri tai palvelu, jonka käyttäjä nimeää.
Eksplisiittinen saavuttamaton reitti hylkää paketin paikallisesti
Tyypin unreachable reitti on tarkoituksellinen paikallinen vastaus. Se käskee ytimen hylätä paketin ja palauttaa EHOSTUNREACH lähettäjälle, minkä vuoksi virhe ilmestyy heti eikä mikään liikenne poistu koneesta. Joku tai jokin automaatio asetti reitin sinne tarkoituksella.
Reittityypit eivät ole vaihdettavissa. Blackhole hylkää paketin ilman virhettä lähettäjälle, prohibit palauttaa EACCES ja unreachable palauttaa EHOSTUNREACH. Siksi VPN-apuri, joka asentaa nielureitin uudelleenyhdistämisen aikana, voi tuottaa purskeen host-unreachable-virheitä, jotka katoavat tunnelin noustua, kun taas blackhole-reitti tuottaisi sen sijaan hiljaisia aikakatkaisuja.
Etsi tyyppi kaikista tauluista ennen kuin syytät etäpäätä. Taulun valitseva sääntö on yhtä tärkeä kuin sen sisällä oleva reitti, eikä päätauluun lisätty reitti auta asiakasta, jonka käytäntösääntö lähettää sen liikenteen muualle.
Kuollut naapuri tuottaa saman virheen Ethernetissä
Kun valittu reitti käyttää linkin yhdyskäytävää, toimitus tarvitsee ratkaistun linkkikerroksen osoitteen. Ydin lähettää ARP- tai IPv6-naapuripyynnön, ja jos vastausta ei tule, pakettia ei voi kehystää. Lähetys epäonnistuu silloin EHOSTUNREACHilla, vaikka reitti itsessään on kelvollinen.
Naapuritaulu nimeää vaiheen. INCOMPLETE tarkoittaa, että ratkaisu on vielä kesken, FAILED tarkoittaa, että viimeinen yritys ei saanut vastausta, ja REACHABLE tai STALE tarkoittaa, että ytimellä on käyttökelpoinen osoite. VPN-yhdyskäytävän FAILED-merkintä on paikallinen toimitushäiriö, ei todiste tunnelin kaukaisesta päästä.
Lue merkintä todelliselle seuraavalle hypylle, älä kaukaiselle internet-osoitteelle. Kaukaiseen osoitteeseen päästään yleensä reitittimen kautta, joten sillä ei ole omaa ARP-merkintää; sellaisen kysyminen on kategoriavirhe, joka lähettää ihmiset etsimään puuttuvaa merkintää, jota ei koskaan pitänyt olla.
Etäraportit ja asynkroniset UDP-virheet
EHOSTUNREACH voi saapua myös ulkoa. Reititin, joka ei voi välittää pakettia, saattaa lähettää ICMP host unreachable -viestin, ja ydin välittää sen raportin socketille, joka omistaa virtauksen. Siinä tapauksessa reitti ja naapuri ovat kunnossa, ja vika kuuluu paikallisverkon ulkopuoliseen hyppyyn.
UDP vaikeuttaa kohdistamista. Myöhemmän lähetys- tai vastaanottokutsun palauttama virhe voi viitata aiempaan datagrammiin, joten epäonnistuvan kutsun osoite ja aika eivät välttämättä vastaa pakettia, joka laukaisi raportin. Yhdistetty UDP-socket saa virheen kerran, eikä yhdistämätön socket välttämättä näe sitä koskaan.
Siksi ajoitus kuuluu todisteisiin. Merkitse, milloin virhe ilmaantui, mitä vertaisosoitetta socket käytti ja oliko tunneli juuri yhdistetty uudelleen. Purske heti reittimuutoksen jälkeen viittaa paikalliseen tauluun; yksittäinen virhe minuutteja vakaan virtauksen alusta viittaa polkuraporttiin.
Erottele kerrokset ennen salauksen muuttamista
Kolme kysymystä luokittelee virheen. Valitsiko ydin reitin, joka hylkää kohteen? Valitsiko se kelvollisen reitin mutta ei ratkaissut seuraavaa hyppyä? Vai saapuiko raportti paikallisverkon ulkopuolelta? Vain kolmas tapaus voi liittää tunnelin kaukaisen pään, eikä sekään liitä salausta.
Todennus- ja neuvotteluongelmat ilmenevät omina virheinään sen jälkeen, kun kuljetus saavuttaa vertaisen. Salauksen vaihtaminen tai asiakkaan uudelleenasennus ei voi korjata paikallista unreachable-reittiä, ja se tuhoaa reitti- ja naapuritodisteet, joita tarvitsisit todelliseen syyhyn.
Kirjaa kohde, nimiavaruus, valittu taulu, seuraava hyppy, naapurin tila ja virheen aika ennen ensimmäistä muutosta. Suorita sama haku uudelleen korjauksen jälkeen; reitti, joka osoittaa nyt tunneliin, ja naapurimerkintä, joka nyt ratkeaa, ovat vahvempi todiste kuin onnistunut ping asiaankuulumattomaan osoitteeseen.