Ich fasse nochmal zusammen was ich gemacht habe:
1.) Beide PiHole IP's als DNS Server in den beiden VLANs HEIM & VPN hinterlegt, damit sie per DHCP verteilt werden.
GAST lasse ich bei mir offen und ohne AdBlocker.
Die WAN seitigen DNS Server sind auf Standard, habe aber zusätzlich unter Settings - Security den DNS Shield mit Manuell & Cloudflare aktiviert! Gehe auch in den PiHoles über Cloudflare mit DoT
2.) Group mit meinen beiden PiHole IPs angelegt (von Vorteil wenn die IP's angrenzend sind, da sonst der Part --to-destination ein Problem wird)
Im Unifi Network: Settings - Profiles - IP Group - Create New
3.) Per SSH auf die UXG-Lite und mittels ipset list die GroupID herausfinden.
4.) In /data/custom/ (Unterordner custom muss vorher mit mkdir angelegt werden) ein Script erstellen -> zB. mit vi DNStoPiHole.sh
Die beiden Variablen an die eigenen Bedürfnisse anpassen!
Die komplette Regel wird vorab mittels -C Befehl abgefragt (vor dem Doppelpipe ||) und nur angelegt wenn Sie noch nicht vorhanden ist (nach dem Doppelpipe ||)!
#!/bin/bash
PIHOLE_GROUP="UBIOS_660e6f29337f6f546e45690f"
PIHOLE_IPS_PORT53="192.168.178.5-192.168.178.6:53"
PIHOLE_IPS_PORT853="192.168.178.5-192.168.178.6:853"
#Prerouting Port 53
iptables -t nat -C PREROUTING -i br0 -p tcp -m set ! --match-set "${PIHOLE_GROUP}" src -m set ! --match-set "${PIHOLE_GROUP}" dst --dport 53 -j DNAT --to-destination "${PIHOLE_IPS_PORT53}" || iptables -t nat -A PREROUTING -i br0 -p tcp -m set ! --match-set "${PIHOLE_GROUP}" src -m set ! --match-set "${PIHOLE_GROUP}" dst --dport 53 -j DNAT --to-destination "${PIHOLE_IPS_PORT53}"
iptables -t nat -C PREROUTING -i br0 -p udp -m set ! --match-set "${PIHOLE_GROUP}" src -m set ! --match-set "${PIHOLE_GROUP}" dst --dport 53 -j DNAT --to-destination "${PIHOLE_IPS_PORT53}" || iptables -t nat -A PREROUTING -i br0 -p udp -m set ! --match-set "${PIHOLE_GROUP}" src -m set ! --match-set "${PIHOLE_GROUP}" dst --dport 53 -j DNAT --to-destination "${PIHOLE_IPS_PORT53}"
#Prerouting Port 853
iptables -t nat -C PREROUTING -i br0 -p tcp -m set ! --match-set "${PIHOLE_GROUP}" src -m set ! --match-set "${PIHOLE_GROUP}" dst --dport 853 -j DNAT --to-destination "${PIHOLE_IPS_PORT853}" || iptables -t nat -A PREROUTING -i br0 -p tcp -m set ! --match-set "${PIHOLE_GROUP}" src -m set ! --match-set "${PIHOLE_GROUP}" dst --dport 853 -j DNAT --to-destination "${PIHOLE_IPS_PORT853}"
iptables -t nat -C PREROUTING -i br0 -p udp -m set ! --match-set "${PIHOLE_GROUP}" src -m set ! --match-set "${PIHOLE_GROUP}" dst --dport 853 -j DNAT --to-destination "${PIHOLE_IPS_PORT853}" || iptables -t nat -A PREROUTING -i br0 -p udp -m set ! --match-set "${PIHOLE_GROUP}" src -m set ! --match-set "${PIHOLE_GROUP}" dst --dport 853 -j DNAT --to-destination "${PIHOLE_IPS_PORT853}"
#Postrouting/Masquerade Port 53
iptables -t nat -C POSTROUTING -m set ! --match-set "${PIHOLE_GROUP}" src -m set --match-set "${PIHOLE_GROUP}" dst -p tcp --dport 53 -j MASQUERADE || iptables -t nat -A POSTROUTING -m set ! --match-set "${PIHOLE_GROUP}" src -m set --match-set "${PIHOLE_GROUP}" dst -p tcp --dport 53 -j MASQUERADE
iptables -t nat -C POSTROUTING -m set ! --match-set "${PIHOLE_GROUP}" src -m set --match-set "${PIHOLE_GROUP}" dst -p udp --dport 53 -j MASQUERADE || iptables -t nat -A POSTROUTING -m set ! --match-set "${PIHOLE_GROUP}" src -m set --match-set "${PIHOLE_GROUP}" dst -p udp --dport 53 -j MASQUERADE
#Postrouting/Masquerade Port 853
iptables -t nat -C POSTROUTING -m set ! --match-set "${PIHOLE_GROUP}" src -m set --match-set "${PIHOLE_GROUP}" dst -p tcp --dport 853 -j MASQUERADE || iptables -t nat -A POSTROUTING -m set ! --match-set "${PIHOLE_GROUP}" src -m set --match-set "${PIHOLE_GROUP}" dst -p tcp --dport 853 -j MASQUERADE
iptables -t nat -C POSTROUTING -m set ! --match-set "${PIHOLE_GROUP}" src -m set --match-set "${PIHOLE_GROUP}" dst -p udp --dport 853 -j MASQUERADE || iptables -t nat -A POSTROUTING -m set ! --match-set "${PIHOLE_GROUP}" src -m set --match-set "${PIHOLE_GROUP}" dst -p udp --dport 853 -j MASQUERADE
Alles anzeigen
5.) In /etc/crontab/ folgenden Eintrag machen
Pfad wieder an die eigenen Bedürfnisse anpassen!
* * * * * root /data/custom/DNStoPiHole.sh
6.) Danach ein service cron reload
7.) Checken ob in /var/log/cron.log ein Fehler angezeigt wird.
Falls ja, File in /etc/cron.d/ auf Fehler prüfen und erneut ein service cron reload durchführen.
8.) Max. 1 min. warten und die Regeln sollten vorhanden sein!
Hoffe es funktioniert bei euch auch
P.S.: Die 4 Firewall Regeln die ich über die GUI am UXG-Lite angelegt habe, habe ich als zusätzliche Einschränkung gelassen!