Mit változtat a szabályalapú útválasztás a VPN-forgalmon, és mit nem
A szabályok döntik el, melyik táblát kérdezzük, ezért a főtábla alapértelmezett útvonala gyakran semmit nem magyaráz. Olvassa együtt a prioritásokat, jelöléseket és forrásokat, mielőtt szabályt ad hozzá.
A szabályalapú útválasztás más kérdésre válaszol, mint amelyet a legtöbb hibaelhárítási jegyzet feltesz. A főtábla megmondja, hová megy egy cél; a házirend-szabályok megmondják, melyik táblát kérdezzük egyáltalán, és ezt dönthetik el a forráscím, egy csomagjelölés, vagy az interfész alapján, amelyen a csomag érkezett. Ha egy alagút következetlenül viselkedik, gyakran a szabálykészlet az ok, és gyakran nem az útválasztási tábla.
A szabályok választják a táblát, aztán a tábla választja az útvonalat
Minden szabály hordoz prioritást, egyezési feltételt és céltáblát. A kernel prioritási sorrendben járja a szabályokat, és az első egyezésnél megáll, majd elvégzi a szokásos leghosszabb előtag keresést abban a táblában. Az üres táblára mutató szabály átcsúszik arra, amit a következő szabály választ, és így egy gondosan megírt szabály úgy tűnhet, mintha semmit nem tenne.
Ezért ritkán magyarázza meg a főtábla kiírása a működő VPN-klienst. A kliensek általában alacsony prioritásszámokon szúrják be a szabályokat, jóval a főtábla alapértelmezett szabálya előtt, így a csomag soha nem éri el az útvonalat, amelyet bámult. A főtáblában egy metrika csökkentése semmit nem változtat a már elterelt forgalmon.
Egy szabály szándékosan fekete lyukká vagy elérhetetlenné is tehet egy előtagot. Egyes kliensek ilyen szabályt tesznek be biztonsági kapcsolóként, és akkor az eldobás inkább tűnik törött alagútnak, mint beállítottnak.
A szabálykészletet sorozatként olvassa, ne listaként
Írassa ki a szabályokat prioritásaikkal és a hivatkozott táblákkal, majd írassa ki minden táblát, amely alapértelmezett vagy alagútútvonalat hordoz. A sorrend az a rész, amely számít, és ez az a rész, amelyet a képernyőkép általában kihagy:
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
Az utolsó két parancs az, amely a teóriát megfigyeléssé teszi, mert azt kérdezik, mit tenne a kernel azzal a forrással és azzal a jelöléssel. Ha a válasz megváltozik, amikor a jelölés megváltozik, jelölésalapú szabály van játékban, és minden teszt, amely kihagyja a jelölést, más csomagot tesztel. A külső kapcsolat saját szabályt érdemel. Egy alagútnak, amely minden forgalmat magán keresztül irányít, ki kell zárnia a végpont címét, amelyhez csatlakozik, különben a titkosított csomagok visszaküldődnek az alagútba, amelyet épp elhagytak. A legtöbb kliens automatikusan beszúrja ezt a kizárást, és a kézzel szerkesztett szabálykészlet az a hely, ahol hiányzik.
Jelölések és socketek: két mód, ahogy a kliensek osztják a forgalmat
Egyes kliensek a tűzfalban jelölik a csomagokat, és olyan szabályt adnak hozzá, amely illeszkedik a jelölésre. Mások socket szintű útválasztást használnak, és útvonalat tesznek a socketre, mielőtt az csatlakozik. Az első látható itt: ip rule; a második nem, és nem jelenik meg általános keresésben.
Ha egy tesztprogram másképp viselkedik, mint az alkalmazás, amelyet képviselnie kellene, ellenőrizze, hogy az alkalmazás tesz-e jelölést, vagy eszközhöz köt-e. Ez a különbség nem rejtély, ha egyszer megnevezzük a mechanizmust, és megmagyarázza, miért járhat különböző útvonalakon egy shellből indított curl és egy böngészőfül ugyanazon a gépen. Mindkét technika szabályalapú útválasztás tág értelemben: valami más alapján választanak útvonalat, mint a cél. Egyik sem engedélyezi a forgalmat, és egyik sem helyettesíti a tűzfalszabályokat vagy a hitelesítő adatokat, amelyeket a partner elvár.
Kövesse a tulajdonjogot, mielőtt még egy szabályt hozzáad
A szabályokat valami telepíti. Egy VPN-kliens, egy hálózatkezelő és egy kézzel írt szkript mindegyike adhat hozzá szabályokat indításkor, és az újracsatlakozási logika hátrahagyhatja az előző készletet. Két elavult szabály egy korábbi profilból továbbra is irányítja a forgalmat jóval a profil törlése után.
Állapítsa meg, melyik folyamat birtokolja a szabályt prioritása és alakja alapján, és ellenőrizze, hogy ez a tulajdonos minden kapcsolatnál újraírja-e a készletet. Ha igen, a ma hozzáadott kézi szabály holnapra eltűnik, és a javítás a kliens konfigurációjába tartozik, nem egy shell-előzményfájlba. A teljes szabálykészlet kiürítése teszteléshez csábító rövidítés kiszámítható költséggel: eltávolítja azokat a szabályokat is, amelyekre a kliensnek szüksége van a saját alagútja működtetéséhez. Egyenként törölje a szabályokat, vagy teszteljen olyan gépen, amelyet újraindíthat.
Két folyamattal bizonyítsa a hatókört, ne eggyel
Egy javítást csak egy olyan folyamat igazol, amelyet érintenie kell, és egy olyan, amelyet nem. Válasszon egy célt, amelyet a házirend az alagútba irányít, és egyet, amelynek kívül kell maradnia, majd hasonlítsa össze a kereséseket és a rögzítéseket mindkettőnél:
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
Amikor a két keresés különböző interfészeket ad vissza, a szabály tesz valamit. Amikor ugyanazt az interfészt adják vissza, a szabály szélesebben egyezik a szándékolnál, és ez az a hiba, amely csendesen egy egész alhálózatot küld át egyetlen alkalmazásnak szánt alagúton.
Jegyezze fel a szabályok prioritásait és a birtokló szolgáltatást a jegyben, a két tesztcímmel együtt. A következő embernek így reprodukálható párja van a tünet leírása helyett, és egy percen belül meg tudja mondani, hogy a szabályalapú útválasztás még játékban van-e.