Miks Pi-hole v6 eirab WireGuardi klientide DNS-päringuid
Pi-hole v6 otsustab liidese ja kuulamisrežiimi järgi, millised VPN-kliendid DNS-i saavad, mitte ainult pordi järgi. Sobitage mõlemad ja testige seejärel keelatud teed.
Pi-hole v6 võtab vastu DNS-päringu pordil 53 ja otsustab seejärel, kas saabunud paketile tohib vastata. WireGuardi hostis on see teine otsus tavaliselt põhjus, miks klient saab ajutõrke, samal ajal kui resolver näeb LAN-ist terve välja. Port on avatud, FTL töötab, kuid ikkagi ei tule 10.90.0.1-st midagi tagasi. Enne kui vastus väljub, mõjutavad kolm asja üksteist: dns.interface, dns.listeningMode ja tulemüür mõlema ees.
Kuulav socket ei otsusta, kes vastuse saab
FTL avab pordil 53 UDP- ja TCP-kuulajad. Vaikekonfiguratsioonis on socket sageli wildcard, seega ss -lunp | grep :53 näitab 0.0.0.0:53 ja [::]:53 sõltumata sellest, kas VPN-kliente teenindatakse. Wildcard-socket võtab paketi vastu, seejärel rakendab FTL enne vastamist oma liidese- ja allikareegleid. Sellepärast tõestab "port kuulab" tunnelikliendi kohta väga vähe.
Lugege töötavat konfiguratsiooni, mitte faili, mida peate aktiivseks. pihole-FTL --config dns.interface ja pihole-FTL --config dns.listeningMode trükivad tegelikud väärtused ja need võivad hosti failist erineda, kui seadet omab konteiner, keskkonnamuutuja või juurutusvahend. Viide Pi-hole FTL-i konfiguratsiooni viide loetleb režiimid ja selle, milline neist toetub liidesele.
LOCAL küsib, milline alamsuure, SINGLE küsib, milline liides
LOCAL, vaikimisi režiim, vastab päringutele, mille allikaaadress kuulub hosti ühe liidese jaoks seadistatud alamsuurele. Lihtne wg0 alamsuurega 10.90.0.1/24 läbib selle testi, sest klient aadressil 10.90.0.2 asub tunneli alamsuure sees. Marsruuditud klient teispool partnerit, või teises prefiksis NAT-i taha peidetud klient, ei läbi seda, kuigi pakett saabus wg0-le, ja logisse ei ilmu ühtegi päringut.
SINGLE muudab küsimust. See võtab vastu päringud, mis saabuvad liidesele, mille nimetab säte dns.interface, loopback kaasa arvatud, ja eirab allika alamsuure. See on režiim, mis peab vastu aheldatud või marsruuditud VPN-topoloogiale. Määrake mõlemad võtmed koos, sest režiim ilma nimetatud liideseta ei ole täielik juhis:
sudo pihole-FTL --config dns.interface "wg0"
sudo pihole-FTL --config dns.listeningMode "SINGLE"BIND muudab socketit ja sellel on hind
BIND ei filtreeri wildcard-socketit; see seob pordi 53 ainult aadressidega, mis eksisteerivad nimetatud liidesel, seega tuum keeldub mujale saabuvatest pakettidest. See on rangem kui SINGLE ja ei ole selle sünonüüm. Hind ilmneb käivitamisel: kui wg0 ei ole üleval, kui FTL käivitub, ei pruugi olla aadressi, millega siduda, ja resolver võib töötada ilma kuulajata, kuni liides ilmub ja FTL taaskäivitub.
Valige BIND, kui kontrollite käivitumisjärjekorda, näiteks systemd-üksus, mis on järjestatud WireGuardi liidese järele, ja kui soovite, et tuum viskaks kõrvalised paketid ära enne, kui FTL neid näeb. Valige SINGLE, kui tunnel tuleb ja läheb, või kui liidese loob tööriist, mis käivitub pärast FTL-i.
Tulemüür on teine värav
Õige FTL-i režiim ebaõnnestub ikkagi, kui hosti tulemüür viskab pordil wg0 pordi 53 ära. Lubage VPN-i allikavahemik mõlema protokolli jaoks ja hoidke interneti pool suletud. Nftablesis, kus inet filter tabelis on olemasolev input-ahel, näevad reeglid välja nii:
sudo nft add rule inet filter input iifname "wg0" ip saddr 10.90.0.0/24 udp dport 53 accept
sudo nft add rule inet filter input iifname "wg0" ip saddr 10.90.0.0/24 tcp dport 53 acceptLisage vastavad IPv6-reeglid, kui tunnel kannab IPv6, ja asetage need enne ahela drop-poliitikat. Kui host kasutab ufw või firewalld, väljendage sama vastet selles halduris, mitte ärge segage tööriistu. Ärge suunake porti 53 interneti ruuterist edasi; kliendid peaksid jõudma resolveri VPN-aadressini tunneli kaudu.
Kaks teed jäävad eraldi. Kliendi päringud lõpevad FTL-is. FTL-i enda ülesvoolu päringud väljuvad hosti marsruutimistabeli järgi, mis võib tunnelit kasutada või mitte, seega resolver, mis vastab, kuid ei tagasta midagi kasulikku, on ülesvoolu probleem. Veebihaldus ja API kuulavad oma portidel ja vajavad oma piirangut.
Kontrollige vastust ja keeldumist
VPN-kliendist küsige resolveri aadressi mõlema protokolli kaudu: dig @10.90.0.1 example.com ja dig +tcp @10.90.0.1 example.com. Seejärel kontrollige haldusliidese päringulogi, et kinnitada, et FTL päringu salvestas. Kliendi ajutõrge ilma logikirjeta viitab tulemüürile või liidese filtrile; logikirje ilma vastuseta viitab ülesvoolu lahendamisele.
Testige negatiivset teed hostist väljaspool VPN-i. dig @10.90.0.1 example.com peaks aeguma ja ss -lunp resolveris ei peaks näitama porti 53 seotuna avaliku aadressiga. Taaskäivitage teenus korra, seejärel taaskäivitage host ja kinnitage, et resolver vastab endiselt, kui wg0 uuesti ilmub. Päring, mis töötab ainult järgmise taaskäivituseni, ei ole lõpetatud muudatus.