Mitä käytäntöpohjainen reititys muuttaa VPN-liikenteessä ja mitä ei
Säännöt valitsevat, mitä taulukkoa kysytään, joten päätaulukon oletusreitti ei usein selitä mitään. Lue prioriteetit, merkit ja lähteet yhdessä ennen säännön lisäämistä.
Käytäntöpohjainen reititys vastaa eri kysymykseen kuin se, jonka useimmat vianetsintämuistiinpanot esittävät. Päätaulukko kertoo, minne kohde menee; käytäntösäännöt kertovat, mitä taulukkoa ylipäätään kysytään, ja ne voivat päättää sen lähdeosoitteen, paketin merkin, tai sen liitännän perusteella, jolle paketti saapui. Kun tunneli käyttäytyy epäjohdonmukaisesti, sääntöjoukko on usein syy ja reititystaulukko usein ei.
Säännöt valitsevat taulukon, sitten taulukko valitsee reitin
Jokaisella säännöllä on prioriteetti, täsmäytysehto ja kohdetaulukko. Ydin käy säännöt läpi prioriteettijärjestyksessä ja pysähtyy ensimmäiseen täsmäytykseen, tekee sitten tavallisen pisimmän etuliitteen haun siinä taulukossa. Tyhjään taulukkoon osoittava sääntö putoaa siihen, minkä seuraava sääntö valitsee, ja näin huolellisesti kirjoitettu sääntö voi näyttää tekevän ei mitään.
Siksi päätaulukon tulostaminen selittää harvoin toimivaa VPN-asiakasta. Asiakkaat lisäävät säännöt yleensä matalille prioriteettinumeroille, kauan ennen päätaulukon oletussääntöä, joten paketti ei koskaan saavuta reittiä, jota tuijotit. Metriikan laskeminen päätaulukossa ei muuta mitään liikenteelle, joka oli jo ohjattu toisaalle.
Sääntö voi myös tarkoituksella tehdä etuliitteestä mustan aukon tai tavoittamattoman. Jotkut asiakkaat lisäävät tällaisen säännön turvakytkimeksi, ja silloin pudotus näyttää rikkinäiseltä tunnelilta eikä määritellyltä.
Lue sääntöjoukko jonona, ei luettelona
Tulosta säännöt prioriteetteineen ja taulukkoineen, joihin ne viittaavat, ja tulosta sitten jokainen taulukko, jossa on oletus- tai tunnelireitti. Järjestys on se osa, jolla on merkitystä, ja se on osa, jonka kuvakaappaus yleensä jättää pois:
ip rule show ip route show table all | sed -n '1,60p' ip route get 198.51.100.20 from 10.8.0.2 ip route get 198.51.100.20 from 10.8.0.2 mark 0x1
Kaksi viimeistä komentoa ovat ne, jotka muuttavat teorian havainnoksi, koska ne kysyvät, mitä ydin tekisi kyseiselle lähteelle ja kyseiselle merkille. Jos vastaus muuttuu, kun merkki muuttuu, merkkiin perustuva sääntö on pelissä ja mikä tahansa testi, joka jättää merkin pois, testaa eri pakettia. Ulkoinen yhteys ansaitsee oman sääntönsä. Tunnel, joka reitittää kaiken liikenteen itsensä kautta, on jätettävä pois päätepisteosoite, johon se yhdistää, muuten salatut paketit lähetetään takaisin tunneliin, jonka ne juuri jättivät. Useimmat asiakkaat lisäävät tämän poissulkemisen automaattisesti, ja käsin muokattu sääntöjoukko on paikka, jossa se puuttuu.
Merkit ja pistokkeet: kaksi tapaa, joilla asiakkaat jakavat liikennettä
Jotkut asiakkaat merkitsevät paketteja palomuurissa ja lisäävät säännön, joka täsmää merkkiin. Toiset käyttävät reititystä pistokkeen tasolla ja asettavat reitin pistokkeelle ennen kuin se yhdistää. Ensimmäinen näkyy kohdassa ip rule; toinen ei, eikä se näy yleisessä haussa.
Jos testiohjelma käyttäytyy eri tavalla kuin sovellus, jota sen pitäisi edustaa, tarkista, asettaako sovellus merkin vai sitoutuuko se laitteeseen. Tämä ero ei ole arvoitus, kun mekanismi on nimetty, ja se selittää, miksi kuoresta ajettu curl ja selaimen välilehti voivat kulkea eri teitä samalla koneella. Molemmat tekniikat ovat käytäntöpohjaista reititystä laajassa mielessä: ne valitsevat polun jollakin muulla kuin kohteella. Kumpikaan ei valtuuta liikennettä, eikä kumpikaan korvaa palomuurisääntöjä tai tunnistetietoja, joita vastapuoli odottaa.
Jäljitä omistajuus ennen kuin lisäät toisen säännön
Säännöt asentaa jokin. VPN-asiakas, verkkohallinta ja käsin kirjoitettu skripti voivat kukin lisätä sääntöjä käynnistyksessä, ja uudelleenyhdistämislogiikka voi jättää edellisen joukon taakseen. Kaksi vanhentunutta sääntöä aiemmasta profiilista ohjaa liikennettä vielä kauan sen jälkeen, kun profiili on poistettu.
Selvitä, mikä prosessi omistaa säännön sen prioriteetin ja muodon perusteella, ja tarkista, kirjoittaako omistaja joukon uudelleen joka yhteydellä. Jos kirjoittaa, tänään lisätty käsisääntö katoaa huomenna, ja korjaus kuuluu asiakkaan asetuksiin eikä kuoren historiafileeseen. Koko sääntöjoukon tyhjentäminen testausta varten on houkutteleva oikopolku, jolla on ennustettava hinta: se poistaa myös säännöt, joita asiakas tarvitsee oman tunnelinsa pitämiseen toiminnassa. Poista yksi sääntö kerrallaan tai testaa koneella, jonka voit käynnistää uudelleen.
Todista laajuus kahdella virtauksella, ei yhdellä
Korjaus varmistetaan vain virtauksella, johon pitäisi vaikuttaa, ja virtauksella, johon ei pitäisi. Valitse kohde, jonka käytäntö reitittää tunneliin, ja toinen, joka on jätettävä ulkopuolelle, ja vertaa sitten hakuja ja kaappauksia molemmille:
ip route get 198.51.100.20 from 192.0.2.44 ip route get 198.51.100.21 from 192.0.2.44 tcpdump -ni any host 198.51.100.21 and port 443
Kun kaksi hakua palauttaa eri liitännät, sääntö tekee jotain. Kun ne palauttavat saman liitännän, sääntö täsmää laajemmin kuin oli tarkoitus, ja se on vika, joka lähettää hiljaa kokonaisen aliverkon tunnelin läpi, joka oli tarkoitettu yhdelle sovellukselle.
Kirjaa sääntöjen prioriteetit ja omistava palvelu tikettiin yhdessä kahden testiosoitteen kanssa. Seuraavalla henkilöllä on silloin toistettava pari oireen kuvauksen sijaan, ja hän voi minuutissa sanoa, onko käytäntöpohjainen reititys vielä pelissä.