Яагаад Pi-hole v6 WireGuard клиентүүдийн DNS асуулгыг үл тоомсорлодог вэ
Pi-hole v6 аль VPN клиент DNS авахыг зөвхөн портоор биш, интерфэйс болон сонсох горимоор тодорхойлдог. Хоёуланг нь тааруулж, дараа нь татгалзсан замыг шалгана уу.
Pi-hole v6 нь 53 порт дээр DNS асуулга хүлээн аваад, ирсэн пакетэд хариу өгөх эсэхийг шийддэг. WireGuard хост дээр энэ хоёр дахь шийдвэр нь ихэвчлэн клиент яагаад хугацаа хэтэрдэг, харин resolver нь LAN-аас эрүүл харагддаг шалтгаан болдог. Порт нээлттэй, FTL ажиллаж байгаа ч 10.90.0.1-ээс юу ч буцаж ирэхгүй байна. Хариу гарахаас өмнө гурван зүйл харилцан үйлчилдэг: dns.interface, dns.listeningMode болон хоёулангийн өмнөх галт хана.
Сонсож буй socket хэнд хариу өгөхийг шийддэггүй
FTL нь 53 порт дээр UDP болон TCP сонсогчийг нээдэг. Анхдагч тохиргоонд socket нь ихэвчлэн wildcard байдаг тул ss -lunp | grep :53 VPN клиентүүдэд үйлчилж байгаа эсэхээс үл хамааран 0.0.0.0:53 болон [::]:53-ыг харуулна. wildcard socket пакетыг хүлээн авч, дараа нь FTL хариу өгөхийн өмнө интерфэйс болон эх үүсвэрийн дүрмээ хэрэглэдэг. Тиймээс «порт сонсож байна» гэдэг нь туннель клиентийн талаар маш бага зүйлийг нотолдог.
Идэвхтэй гэж бодож буй файлын оронд ажиллаж буй тохиргоог уншина уу. pihole-FTL --config dns.interface болон pihole-FTL --config dns.listeningMode бодит утгуудыг хэвлэдэг бөгөөд контейнер, орчны хувьсагч эсвэл байршуулалтын менежер энэ тохиргоог эзэмшсэн үед тэдгээр нь хостын файлаас ялгаатай байж болно. Pi-hole FTL тохиргооны лавлагаа горимууд болон тэдгээрийн аль нь интерфэйсэд тулгуурладаг болохыг жагсаав.
LOCAL аль дэд сүлжээг, SINGLE аль интерфэйсийг асуудаг
LOCAL, анхдагч горим, эх хаяг нь хостын аль нэг интерфэйс дээр тохируулсан дэд сүлжээнд харьяалагдах асуулгад хариулдаг. 10.90.0.1/24-тэй энгийн wg0 энэ шалгалтыг давдаг, учир нь 10.90.0.2 дахь клиент туннелийн дэд сүлжээнд байдаг. Пеерийн нөгөө талд чиглүүлсэн клиент, эсвэл өөр префикс дэх NAT-ын ард нуугдсан клиент, пакет wg0 дээр ирсэн ч түүнийг давдаггүй, лог дээр нэг ч асуулга харагдахгүй.
SINGLE асуулгыг өөрчилдөг. Энэ нь dns.interface-д нэрлэсэн интерфэйс дээр ирж буй асуулгыг loopback-тэй хамт хүлээн авч, эх дэд сүлжээг үл тоомсорлодог. Гинжин буюу чиглүүлсэн VPN топологид тэсвэрлэдэг горим нь энэ юм. Хоёр түлхүүрийг хамт тохируулна уу, учир нь нэрлэсэн интерфэйсгүй горим нь бүрэн заавар биш:
sudo pihole-FTL --config dns.interface "wg0"
sudo pihole-FTL --config dns.listeningMode "SINGLE"BIND socket-ыг өөрчилдөг бөгөөд энэ нь үнэтэй
BIND нь wildcard socket-ыг шүүдэггүй; 53 портыг зөвхөн нэрлэсэн интерфэйс дээр байгаа хаягуудтай холбодог тул цөм өөр газар ирсэн пакетыг татгалздаг. Энэ нь SINGLE-ээс чанга бөгөөд түүний ижил утга биш. Үнэ нь ачаалах үед илэрдэг: FTL эхлэх үед wg0 өргөгдөөгүй бол холбох хаяг байхгүй байж, интерфэйс гарч FTL дахин ачаалагдах хүртэл resolver сонсогчгүй ажиллаж болно.
Ачааллын дарааллыг хянаж байгаа үед BIND сонгоно уу, жишээ нь WireGuard интерфэйсийн дараа эрэмбэлсэн systemd нэгж, мөн цөм FTL-ийн харахаас өмнө төөрсөн пакетыг хаяхыг хүсвэл. Туннель ирж явдаг үед, эсвэл интерфэйсийг FTL-ээс хойш эхэлдэг хэрэгсэл үүсгэдэг үед SINGLE сонгоно уу.
Галт хана бол хоёр дахь хаалга
Зөв FTL горим ч хостын галт хана wg0 дээр 53 портыг хаявал бүтэлгүйтнэ. Хоёр протоколд VPN эх үүсвэрийн хүрээг зөвшөөрч, интернэтийн талыг хаалттай байлгана уу. nftables дээр, inet filter хүснэгтийн одоо байгаа input гинжин хэлхээтэйгээр дүрмүүд ингэж харагдана:
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Туннель IPv6 зөөв бол тохирох IPv6 дүрмийг нэмж, гинжин хэлхээний drop бодлогын өмнө тавина уу. Хост ufw эсвэл firewalld ашигладаг бол хэрэгслүүдийг хольж биш, тэр менежерт ижил тохирлыг илэрхийлнэ үү. 53 портыг интернэтийн чиглүүлэгчээс дамжуулж болохгүй; клиентүүд resolver-ийн VPN хаягт туннелээр хүрэх ёстой.
Хоёр зам тусдаа үлддэг. Клиентүүдийн асуулга FTL дээр дуусдаг. FTL-ийн өөрийн дээш чиглэсэн хайлт нь хостын чиглүүлэлтийн хүснэгтийн дагуу гардаг бөгөөд энэ нь туннелийг ашиглаж болох эсвэл болохгүй, тиймээс хариулж байгаа ч хэрэгтэй юу ч буцаадаггүй resolver нь дээш чиглэлийн асуудал юм. Вэб админ болон API нь өөрийн порт дээр сонсож, өөрийн хязгаарлалт хэрэгтэй.
Хариу болон татгалзлыг шалгана уу
VPN клиентээс resolver-ийн хаягыг хоёр протоколоор асууна уу: dig @10.90.0.1 example.com болон dig +tcp @10.90.0.1 example.com. Дараа нь админ интерфэйс дэх асуулгын логыг шалгаж, FTL асуулгыг бүртгэсэн эсэхийг баталгаажуулна уу. Лог бичлэггүй клиентийн хугацаа хэтрэлт нь галт хана эсвэл интерфэйсийн шүүлтүүрийг заана; хариугүй лог бичлэг нь дээш чиглэлийн шийдвэрийг заана.
VPN-ээс гаднах хостоос сөрөг замыг шалгана уу. dig @10.90.0.1 example.com хугацаа хэтрэх ёстой, мөн ss -lunp resolver дээр 53 порт нийтийн хаягтай холбогдсон байж болохгүй. Үйлчилгээг нэг удаа дахин эхлүүлж, дараа нь хостыг дахин ачаалаад wg0 дахин гарсны дараа resolver хариулж байгаа эсэхийг баталгаажуулна уу. Зөвхөн дараагийн дахин ачаалалт хүртэл ажилладаг асуулга нь дууссан өөрчлөлт биш.