Mae Pi-hole v6 yn derbyn ymholiad DNS ar borth 53 ac yna’n penderfynu a ganiateir ateb y pecyn a gyrhaeddodd. Ar westeiwr WireGuard, yr ail benderfyniad hwnnw fel arfer yw’r rheswm pam mae cleient yn cael terfyn amser tra bod y datryswr yn edrych yn iach o’r LAN. Mae’r porth yn agored, mae FTL yn rhedeg, ac eto nid oes dim yn dod yn ôl o 10.90.0.1. Mae tri pheth yn rhyngweithio cyn i ateb adael: dns.interface, dns.listeningMode a’r wal dân o flaen y ddau.

Nid y soced gwrando sy’n penderfynu pwy sy’n cael ateb

Mae FTL yn agor gwrandawyr UDP a TCP ar borth 53. Yn y ffurfweddiad diofyn mae’r soced yn aml yn wildcard, felly ss -lunp | grep :53 yn dangos 0.0.0.0:53 a [::]:53 p’un a yw cleientiaid VPN yn cael eu gwasanaethu ai peidio. Mae soced wildcard yn derbyn y pecyn, yna mae FTL yn cymhwyso ei reolau rhyngwyneb a ffynhonnell cyn ateb. Dyna pam mai ychydig iawn y mae "mae’r porth yn gwrando" yn ei brofi am gleient twnnel.

Darllenwch y ffurfweddiad sy’n rhedeg yn lle’r ffeil y credwch sy’n weithredol. pihole-FTL --config dns.interface a pihole-FTL --config dns.listeningMode yn argraffu’r gwerthoedd effeithiol, a gallant fod yn wahanol i ffeil y gwesteiwr pan fo cynhwysydd, newidyn amgylchedd neu reolwr defnyddio yn berchen ar y gosodiad. Mae’r Cyfeirlyfr ffurfweddu Pi-hole FTL yn rhestr’r moddau a pha un sy’n dibynnu ar y rhyngwyneb.

Mae LOCAL yn gofyn pa isrwyd, mae SINGLE yn gofyn pa ryngwyneb

Mae LOCAL, y modd diofyn, yn ateb ymholiadau y mae eu cyfeiriad ffynhonnell yn perthyn i isrwyd a ffurfweddwyd ar un o ryngwynebau’r gwesteiwr. Mae wg0 syml gyda 10.90.0.1/24 yn pasio’r prawf hwnnw, oherwydd mae’r cleient yn 10.90.0.2 yn eistedd y tu mewn i isrwyd y twnnel. Cleient wedi’i lwybro ar ochr bellaf cymar, neu un wedi’i guddio y tu ôl i NAT mewn rhagddodiad gwahanol, nid yw’n pasio, er bod y pecyn wedi cyrraedd wg0, ac nid oes ymholiad yn ymddangos yn y log.

Mae SINGLE yn newid y cwestiwn. Mae’n derbyn ymholiadau sy’n cyrraedd y rhyngwyneb a enwir yn dns.interface, gyda loopback wedi’i gynnwys, ac yn anwybyddu’r isrwyd ffynhonnell. Dyma’r modd sy’n goroesi topoleg VPN gadwynol neu lwybriedig. Gosodwch y ddau allwedd gyda’i gilydd, oherwydd nid yw modd heb ryngwyneb enwir yn gyfarwyddyd cyflawn:

sudo pihole-FTL --config dns.interface "wg0"
sudo pihole-FTL --config dns.listeningMode "SINGLE"

Mae BIND yn newid y soced, ac mae hynny’n costio

Nid yw BIND yn hidlo soced wildcard; mae’n rhwymo porth 53 yn unig i gyfeiriadau sy’n bodoli ar y rhyngwyneb enwir, felly mae’r cnewyllyn yn gwrthod pecynnau sy’n cyrraedd yn rhywle arall. Mae’n fwy llym na SINGLE ac nid yw’n gyfystyr ag ef. Mae’r gost yn ymddangos wrth gychwyn: os nad yw wg0 i fyny pan fydd FTL yn cychwyn, efallai nad oes cyfeiriad i’w rwymo, a gall y datryswr redeg heb wrandäwr nes bod y rhyngwyneb yn ymddangos ac FTL yn ailgychwyn.

Dewiswch BIND pan fyddwch yn rheoli’r drefn gychwyn, er enghraifft uned systemd wedi’i threfnu ar ôl y rhyngwyneb WireGuard, a phan fyddwch am i’r cnewyllyn ollwng pecynnau crwydr cyn i FTL eu gweld. Dewiswch SINGLE pan fydd y twnnel yn mynd a dod, neu pan fydd y rhyngwyneb yn cael ei greu gan offeryn sy’n cychwyn ar ôl FTL.

Y wal dân yw’r ail giât

Mae modd FTL cywir yn dal i fethu os yw wal dân y gwesteiwr yn gollwng porth 53 ar wg0. Caniatewch amrediad ffynhonnell y VPN ar gyfer y ddau brotocol a chadwch yr ochr rhyngrwyd yn gaeedig. Yn nftables, gyda’r gadwyn input bresennol yn nhabl inet filter, mae’r rheolau fel hyn:

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 accept

Ychwanegwch reolau IPv6 cyfatebol os yw’r twnnel yn cario IPv6, a’u rhoi o flaen polisi gollwng y gadwyn. Os yw’r gwesteiwr yn defnyddio ufw neu firewalld, mynegwch yr un cyfatebiaeth yn y rheolwr hwnnw yn lle cymysgu offer. Peidiwch â blaenddodi porth 53 o’r llwybrydd rhyngrwyd; dylai cleientiaid gyrraedd cyfeiriad VPN y datryswr trwy’r twnnel.

Mae dwy lwybr yn parhau ar wahân. Mae ymholiadau cleientiaid yn gorffen yn FTL. Mae ymholiadau upstream FTL ei hun yn gadael yn ôl tabl llwybro’r gwesteiwr, a allai ddefnyddio’r twnnel neu beidio, felly mae datryswr sy’n ateb ond heb ddychwelyd dim defnyddiol yn broblem upstream. Mae’r weinyddiaeth we ac API yn gwrando ar eu pyrth eu hunain ac angen eu cyfyngiad eu hunain.

Gwiriwch yr ateb a’r gwrthodiad

O gleient VPN, holwch gyfeiriad y datryswr dros y ddau brotocol: dig @10.90.0.1 example.com a dig +tcp @10.90.0.1 example.com. Yna edrychwch ar log yr ymholiadau yn y rhyngwyneb gweinyddol i gadarnhau bod FTL wedi cofnodi’r ymholiad. Mae terfyn amser cleient heb gofnod yn y log yn cyfeirio at y wal dân neu hidlydd y rhyngwyneb; mae cofnod yn y log heb ateb yn cyfeirio at ddatrysiad upstream.

Profwch y llwybr negyddol o westeiwr y tu allan i’r VPN. dig @10.90.0.1 example.com dylai ddod i ben, a ss -lunp ar y datryswr ni ddylai ddangos porth 53 wedi’i rwymo i gyfeiriad cyhoeddus. Ailgychwynnwch y gwasanaeth unwaith, yna ailgychwynnwch y gwesteiwr a chadarnhewch fod y datryswr yn dal i ateb ar ôl i wg0 ymddangos eto. Nid yw ymholiad sy’n gweithio hyd at yr ailgychwyn nesaf yn newid gorffenedig.

Erthyglau cysylltiedig