Pi-hole v6 పోర్టు 53 పై DNS ప్రశ్నను స్వీకరించి, వచ్చిన ప్యాకెట్కు సమాధానం ఇవ్వడానికి అనుమతి ఉందా అని నిర్ణయిస్తుంది. WireGuard హోస్ట్లో ఈ రెండవ నిర్ణయమే సాధారణంగా క్లయింట్కు టైమ్అవుట్ ఎందుకు అవుతుందో కారణం, అయితే LAN నుండి రిజాల్వర్ ఆరోగ్యంగా కనిపిస్తుంది. పోర్టు తెరిచి ఉంది, FTL నడుస్తోంది, అయినా 10.90.0.1 నుండి ఏమీ తిరిగి రావడం లేదు. సమాధానం బయలుదేరక ముందు మూడు విషయాలు పరస్పరం ప్రభావం చూపుతాయి: dns.interface, dns.listeningMode మరియు రెండింటి ముందు ఉన్న ఫైర్వాల్.

వినే సాకెట్ ఎవరికి సమాధానం లభిస్తుందో నిర్ణయించదు

FTL పోర్టు 53 పై UDP మరియు TCP శ్రోతలను తెరుస్తుంది. డిఫాల్ట్ కాన్ఫిగరేషన్లో సాకెట్ తరచుగా wildcardగా ఉంటుంది, కాబట్టి ss -lunp | grep :53 VPN క్లయింట్లకు సేవ లభిస్తున్నా లేకపోయినా 0.0.0.0:53 మరియు [::]:53 చూపుతుంది. wildcard సాకెట్ ప్యాకెట్ను అంగీకరిస్తుంది, తర్వాత 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 లో పేర్కొన్న ఇంటర్ఫేస్కు వచ్చే ప్రశ్నలను లూప్బ్యాక్తో సహా అంగీకరిస్తుంది మరియు మూల సబ్నెట్ను విస్మరిస్తుంది. గొలుసు లేదా రూట్ చేయబడిన VPN టోపాలజీలో నిలిచే మోడ్ ఇదే. రెండు కీలను కలిపి సెట్ చేయండి, ఎందుకంటే పేర్కొన్న ఇంటర్ఫేస్ లేని మోడ్ పూర్తి సూచన కాదు:

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

BIND సాకెట్ను మారుస్తుంది, దానికి ధర ఉంది

BIND wildcard సాకెట్ను ఫిల్టర్ చేయదు; పోర్టు 53ను పేర్కొన్న ఇంటర్ఫేస్లో ఉన్న చిరునామాలకు మాత్రమే కట్టివేస్తుంది, కాబట్టి కర్నెల్ వేరే చోటికి వచ్చే ప్యాకెట్లను తిరస్కరిస్తుంది. ఇది SINGLE కంటే కఠినమైనది, దానికి పర్యాయపదం కాదు. ధర బూట్ సమయంలో కనిపిస్తుంది: FTL ప్రారంభమయ్యేటప్పుడు wg0 పైన లేకపోతే కట్టడానికి చిరునామా ఉండకపోవచ్చు, ఇంటర్ఫేస్ కనిపించి FTL మళ్లీ ప్రారంభమయ్యే వరకు రిజాల్వర్ శ్రోత లేకుండా నడవవచ్చు.

ప్రారంభ క్రమాన్ని మీరు నియంత్రించినప్పుడు BIND ఎంచుకోండి, ఉదాహరణకు WireGuard ఇంటర్ఫేస్ తర్వాత క్రమబద్ధీకరించిన systemd యూనిట్, మరియు FTL చూసే ముందే కర్నెల్ అల్లరి ప్యాకెట్లను పడవేయాలని కోరినప్పుడు. టన్నెల్ వచ్చి పోతున్నప్పుడు, లేదా FTL తర్వాత ప్రారంభమయ్యే సాధనం ఇంటర్ఫేస్ను సృష్టించినప్పుడు SINGLE ఎంచుకోండి.

ఫైర్వాల్ రెండవ ద్వారం

సరైన FTL మోడ్ కూడా హోస్ట్ ఫైర్వాల్ wg0పై పోర్టు 53ను పడవేస్తే విఫలమవుతుంది. రెండు ప్రోటోకాల్లకు VPN మూల పరిధిని అనుమతించి ఇంటర్నెట్ వైపు మూసి ఉంచండి. inet filter పట్టికలోని ఉన్న input గొలుసుతో nftablesలో నియమాలు ఇలా కనిపిస్తాయి:

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ను ముందుకు పంపకండి; క్లయింట్లు టన్నెల్ ద్వారా రిజాల్వర్ VPN చిరునామాను చేరుకోవాలి.

రెండు మార్గాలు వేరుగా ఉంటాయి. క్లయింట్ ప్రశ్నలు FTLలో ముగుస్తాయి. FTL స్వంత అప్స్ట్రీమ్ శోధనలు హోస్ట్ రూటింగ్ పట్టిక ప్రకారం బయలుదేరుతాయి, అది టన్నెల్ను ఉపయోగించవచ్చు లేదా ఉపయోగించకపోవచ్చు, కాబట్టి సమాధానం ఇచ్చి ఉపయోగకరమైనది ఏదీ తిరిగి ఇవ్వని రిజాల్వర్ అప్స్ట్రీమ్ సమస్య. వెబ్ అడ్మిన్ మరియు API తమ పోర్టులపై వినిపిస్తాయి, వాటికి స్వంత పరిమితి కావాలి.

సమాధానం మరియు తిరస్కరణను ధృవీకరించండి

VPN క్లయింట్ నుండి, రెండు ప్రోటోకాల్లపై రిజాల్వర్ చిరునామాను అడగండి: 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 రిజాల్వర్పై పోర్టు 53 పబ్లిక్ చిరునామాకు కట్టివేయబడినట్టు చూపకూడదు. సేవను ఒకసారి పునఃప్రారంభించి, తర్వాత హోస్ట్ను రీబూట్ చేసి, wg0 మళ్లీ కనిపించిన తర్వాత కూడా రిజాల్వర్ సమాధానం ఇస్తుందని నిర్ధారించుకోండి. తదుపరి రీబూట్ వరకు మాత్రమే పనిచేసే ప్రశ్న పూర్తయిన మార్పు కాదు.

సంబంధిత వ్యాసాలు