OpenWrt házirend-alapú útválasztás: a lánc, amely elkapja a helyi DNS-t
Az ügyfélkérések és a router saját kérései különböző horgokon lépnek be. A preroutingra irányuló házirend minden LAN-kérést szállít, és a routert az ISP uplinkjén hagyja.
A LAN ügyfelei az alagúton keresztül oldanak fel, a router saját lekérdezései pedig csendben nem teszik ezt. A csomagfrissítések, az időszinkronizálás és a dinamikus DNS mind a szokásos uplinkon mennek ki, miközben minden továbbított kérés a VPN-t veszi igénybe, és semmi sem utal a felületen arra, hogy két különböző útvonal létezik. A magyarázat nem hiba a házirendben, hanem annak kérdése, melyik horog látja a csomagot. Két folyam, egy feloldó cím, és közülük csak az egyik halad át a routeren. Szétválasztásuk maga a teljes javítás.
Két folyam, egy feloldó cím
Az első folyam az, amit az emberek elképzelnek. Az ügyfél a router feloldóját kérdezi, a feloldó továbbít felfelé, és ez a továbbított csomag kifelé menet áthalad a routeren. Ez a csomag látható mindannak, ami figyeli a továbbított forgalmat.
A második folyam soha nem érkezik sehonnan. A router hozza létre, tehát nincs bejövő csomag és nincs egyeztethető továbbítási lépés.
Mindkettő ugyanazt a feloldó címet célozhatja, és éppen ezért könnyű elszalasztani a különbséget. Ugyanaz a cél, más eredet, más lánc. Amint látod az eredetet, a diagnózis többi része következik.
A továbbított és a helyben létrehozott csomagok másként lépnek be
A továbbított forgalom akkor értékelődik, amikor egy másik interfészről érkezik. A házirend-útválasztási csomagok ezt prerouting láncként teszik láthatóvá, és az ott elhelyezett szabály minden routeren áthaladó csomagot lát. Ezért viselkednek az ügyfélkérések pontosan úgy, ahogy a házirend leírja, és ezért hagyja figyelmen kívül a router. A szabály nem hibás, csak olyan horoghoz van rögzítve, amely elérhetetlen a router számára. Mozgasd át, és ugyanaz az egyezés működni kezd.
A helyben létrehozott forgalmat a routeren futó folyamat hozza létre, és a kimeneti útvonalra lép. A router saját döntése irányítja, és csak akkor találkozik a házirenddel, ha a házirend lefedi ezt a láncot. Nincs egyeztethető bejövő interfész, és nincs megfigyelhető továbbítási döntés.
Ez annak tulajdonsága, hogy hol születnek a csomagok, nem egy adott csomagé. Az egyik lánchoz írt szabálynak egyszerűen nincs véleménye a másikról. Semmilyen szabályhangolás nem változtat ezen.
Válaszd ki a kimeneti láncot, majd szűkítsd az egyezést
A javítás az, hogy ugyanazt a szándékot a kimeneti lánchoz is hozzákapcsolod, vagy áthelyezed oda a szabályt, amikor a router saját lekérdezései azok, amelyek számítanak. A házirend-útválasztási csomagra épülő OpenWrt-telepítésben ez azt jelenti, hogy a szabály láncbeállításában outputot választasz prerouting helyett. Tartsd meg mindkét szabályt, ha mindkét populációnak lefedettségre van szüksége.
Aztán szűkítsd, hogy mire illeszkedik a szabály. A cél feloldócímek azon a porton, amelyet a feloldó valóban használ, sokkal kisebb döntés, mint mindent, amit a router létrehoz, az alagútba küldeni.
Tartsd a két szabályt kifejezettnek, ahelyett hogy egyet próbálnál írni, amely mindkét láncot lefedi. A külön szabályok könnyebben olvashatók, és lehetővé teszik, hogy letiltsd a router útvonalát anélkül, hogy zavarnád az ügyfélforgalmat hibakeresés közben. A számlálókat is egyenként értelmessé teszik.
Tartsd az alagút saját átvitelét a szabályon kívül
Az alagút külső kapcsolatát is a router hozza létre. Az a szabály, amely minden helyben létrehozott forgalmat az alagútba küld, az alagutat önmagán keresztül irányítja, és az egyáltalán nem jön fel.
A második áldozat a kezelési hozzáférés. A routerből induló adminisztratív munkameneteket, vagy az azokra adott válaszokat egy túl széles helyi szabály az alagútba ránthatja, és a LAN felől elérhetetlenné válhatnak.
Zárd ki az alagút végpontját az egyezésből, és tartsd a szabályt a feloldócímekre korlátozva. Ez elég a DNS-követelményhez, és elég kicsi ahhoz, hogy át lehessen gondolni.
Mindkét populációt teszteld, ne egyet
Figyeld meg, ahogy a router elkészíti a saját lekérdezését, és jegyezd fel, melyik interfész vitte. Ismételd meg a keresést egy LAN-gazdagépről, és jegyezd fel, melyik útvonalat vette. A házirend-szabályok számlálói kitalálás nélkül láthatóvá teszik mindkét választ.
Kezeld az eredményeket két megállapításként. Az az ügyfél, amely az alagúton keresztül old fel, semmit sem mond a routerről, és az a router, amely helyesen old fel, semmit sem mond egy másik figyelőn lévő ügyfélről. Írd le őket külön sorokként a változásnaplóban.
Ellenőrizd a portot is: az 53-as célportra illeszkedő szabály kihagyja azt a feloldót, amely a 853-as DNS over TLS vagy egy HTTPS-végpont mögött található. Illeszkedj ahhoz az átvitelhez, amelyet a beállított upstream valóban használ, és a szivárgás a helyes okból zárul be.