Mikrotik - Container pi-hole im VLAN-Kontext "stand-alone" betreiben (dedizierte IP)
Hallo,
bisher nutzte ich pi-hole auf einem docker-server und damit mit dedizierter IP im Netz. Als Router kommt ein Mikrotik RB 3011 zum Einsatz, den ich jüngst von 6.x auf 7.14 gehoben habe und damit Container nutzen kann, u.a. für pi-hole. Ergänzt sei, dass mein Netz in 5 VLANs aufgeteilt ist (192.168.10.0 - 192.168.50.0)
Mit etwas Kampf (weil die Tutorials alle ohne VLANs arbeiten) war ich heute erfolgreich, pi-hole auf dem MT im Container zum laufen zu bringen. Wie in der MT-Anleitung mit einer in Bezug auf meine IP-Bereiche "wilden" IP 172.19.21.2 für VETH_pihole und /bridge/port auf die "vlan-bridge" (die aus der Anleitung von aqui). Dafür waren in der FW entsprechende input und forward regeln für port 53 nötig. So weit, so gut.
Aber: Da alle DNS-Anfragen über /ip dns set servers=172.19.21.2 kommen, gibt es in pi-hole quasi nur 1 client.
Ich sehe zwei Optionen:
Ich vermute, Lösung zwei wäre's. Aber wie geht das richtig, den Container mit einer eigenen IP erreichbar zu machen?
bisher nutzte ich pi-hole auf einem docker-server und damit mit dedizierter IP im Netz. Als Router kommt ein Mikrotik RB 3011 zum Einsatz, den ich jüngst von 6.x auf 7.14 gehoben habe und damit Container nutzen kann, u.a. für pi-hole. Ergänzt sei, dass mein Netz in 5 VLANs aufgeteilt ist (192.168.10.0 - 192.168.50.0)
Mit etwas Kampf (weil die Tutorials alle ohne VLANs arbeiten) war ich heute erfolgreich, pi-hole auf dem MT im Container zum laufen zu bringen. Wie in der MT-Anleitung mit einer in Bezug auf meine IP-Bereiche "wilden" IP 172.19.21.2 für VETH_pihole und /bridge/port auf die "vlan-bridge" (die aus der Anleitung von aqui). Dafür waren in der FW entsprechende input und forward regeln für port 53 nötig. So weit, so gut.
Aber: Da alle DNS-Anfragen über /ip dns set servers=172.19.21.2 kommen, gibt es in pi-hole quasi nur 1 client.
Ich sehe zwei Optionen:
- Kann man die original-IP "irgendwie" an pi-hole durchreichen?
- Wenn man den Container (ggf. mit einer eigenen bridge?) quasi stand-alone arbeiten lässt abseits der vlan-bride und (per NAT?) pi-hole eine dedizierte IP (z.B. 192.168.10.99) zuweisen würde, könnte man die IP als DNS-Server der clients nutzen anstatt die IP des MT. Dann sähe pi-hole auch wieder alle client-IPs. Das habe ich per DST-NAT versucht - leider erfolglos.
Ich vermute, Lösung zwei wäre's. Aber wie geht das richtig, den Container mit einer eigenen IP erreichbar zu machen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 52726482073
Url: https://administrator.de/contentid/52726482073
Ausgedruckt am: 18.11.2024 um 23:11 Uhr
29 Kommentare
Neuester Kommentar
Kann man die original-IP "irgendwie" an pi-hole durchreichen?
Joa, indem man es so macht wie es eigentlich vorgesehen ist, auf die Idee die IP des Phiole als DNS-Server per DHCP an die Clients zu verteilen bist du nicht gekommen? 🙃 So macht man das ja in der Regel ... Probleme wo es keine gibt 🤪/ip dhcp-server network set [find address=192.168.10.0/24] dns-server=172.19.21.2
# usw.
Am pihole nicht vergessen die VLAN Subnetze für Anfragen freizuschalten (source: any)
Und natürlich am Mikrotik in der Firewall in der Forward-Chain die Kommunikation der Clients mit dem Pihole-Subnet zulassen, fertig ist die Soße.
/ip firewall filter add chain=forward src-address=192.168.0.0/18 dst-address=172.19.21.2 action=accept
☠️
Zitat von @natuerlich:
Dank Dir, @11078840001
Natürlich habe ich das versucht, liegt ja auf der Hand ;) Aber dafür müsste 172.19.21.2 aus meinen VLANs erreichbar sein, aber nur im MT wird die IP erkannt und kann nur dort im DNS verwenden werden.
Dank Dir, @11078840001
Natürlich habe ich das versucht, liegt ja auf der Hand ;) Aber dafür müsste 172.19.21.2 aus meinen VLANs erreichbar sein, aber nur im MT wird die IP erkannt und kann nur dort im DNS verwenden werden.
Quatsch mit Soße, das ist ein Router und was machen Router ? 😉Genau, "routen" und das Netz ist ihm ja bereits bekannt.
Clients fragen das Default-GW nach dem Netz und dein Mikrotik kennt es ergo kann man es auch erreichen, sofern FW technisch nicht abgeschottet wurde.
Und wie gesagt am Pihole muss der Zugriff aus fremden Subnetzen erlaubt werden damit der Pihole die VLANs nicht blockiert!
Daher war ja die Frage, wie ich die 172.19.21.2 (die ist ja auch laut Tutorials nur für interne Zwecke konzeptionel für container im MT nötig) in der FW auf eine 192.168.10.xx übersetzen kann. IP-Hole wäre dann darüber erreichbar und kann dann natürlich auch als DNS-Server im DHCP eingetragen werden.
Nein. Das veth Subnetz ist global für den Router und die Clients sichtbar sofern der Mikrotik auch Default GW für die Clients ist, sofern du es auch in der Firewall zulässt.Vielleicht denke ich zu kompliziert
Jepp, du hast da offensichtlich noch einen Knoten 😉.Aber selbst wenn das geht: Wie könnte man denn einem Container mit einer "internen" IP 172.19.21.2 autark/losgelöst von der vlan-bridge betreiben nach außen eine feste IP z.B. 192.168.10.99 geben?
Das separate Subnetz schaffst du ja bereits mit dem veth.
/interface veth add address=172.19.21.2/24 gateway=172.19.21.1 name=veth_pihole
Das muss mitnichten Teil der Bridge sein damit es erreichbar ist denn es reicht ja das der Router es kennt, ergo routet er auch dorthin! Und natürlich kannst du auch am WAN Ports dorthin forwarden wie mir jeder anderen IP auf dem Mikrotik.
Ach ja noch als Ergänzung. Wenn du das veth Interface zur LAN Interface-Liste hinzufügst dann brauchst du bei der Default-Firewall-Config auch keine weitere Firewall Regel denn dann ist die Forward Chain bereits offen für die VLANs.
Und wenn man will kann man sich auch ein separates VLAN für die Container erstellen und in die Bridge mappen, dann lässt sich das auch an nachstehende Switches tagged übertragen falls man woanders noch weitere Container oder devices hat die in das VLAN rein sollen.
Wenns das nun war bitte Wie kann ich einen Beitrag als gelöst markieren?
# container vlan interface erstellen
/interface vlan add name=container vlan-id=99
# ip dem interface zuweisen
/ip address add interface=container address=172.19.21.1/24
# veth interface für den container anlegen
/interface veth add address=172.19.21.2/24 gateway=172.19.21.1 name=veth_pihole
# den Port in die bridge auf die PVID des container vlans mappen
/interface bridge port add interface=veth_pihole bridge=bridge_local pvid=99
# und das container vlan auf die bridge taggen
/interface bridge vlan add vlan-ids=99 tagged=bridge_local
Wenns das nun war bitte Wie kann ich einen Beitrag als gelöst markieren?
Moin.
Gruß catrell.
Container geht nach Update auf 7.16.x nicht mehr. Weder pihole, noch mosquitto.
Kann ich nicht bestätigen. Sowohl Mosquitto als auch ein pihole laufen nach Upgrade auf 7.16 vor Wochen und auf 7.16.1 einwandfrei in ihren VLANs!- Welche Hardware?
- Connectivity via Container-Shell und
ip a
und Ping auf relevante IPs gecheckt? - Export der Mikrotik Config und Ausgabe der NIC Config im Container wären hilfreich fürs Debugging.
- Ansonsten hilft bei Container-Problemen das Neuanlegen des Containers in den meisten fällen. Konfiguration hat man ja meist eh in separaten Mounts abgelegt so daß das Neuanlegen fix erledigt ist.
Gruß catrell.
hab das gleiche Problem wie natuerlich.
Der Container läuft auf einem RB5009/USB-Disk
Die Stable Version 7.16.1 ist drauf.
Hab die Config mit und ohne VLAN ausprobiert.
Die IP 172.17.0.2 für PiHole ist von allen Devices , egal wo aus dem Netzwerk pingbar, nur das WebGui läuft nicht.
NAT und Firewall-Regeln sind eingestellt, im LogFile gibt es keine Fails, alles ist successfully started....
Werde am WE mal den Container neu anlegen...
danke für den Tipp
Grüße
Marco
Der Container läuft auf einem RB5009/USB-Disk
Die Stable Version 7.16.1 ist drauf.
Hab die Config mit und ohne VLAN ausprobiert.
Die IP 172.17.0.2 für PiHole ist von allen Devices , egal wo aus dem Netzwerk pingbar, nur das WebGui läuft nicht.
NAT und Firewall-Regeln sind eingestellt, im LogFile gibt es keine Fails, alles ist successfully started....
Werde am WE mal den Container neu anlegen...
danke für den Tipp
Grüße
Marco
nur das WebGui läuft nicht.
Mal per Konsole in den Container verbinden und während des versuchten Zugriffs auf die GUI die Logs kontrollieren, checken ob der GUI Prozess überhaupt läuft und aus dem Container Testweise auch mal raus pingen/container shell [find hostname="pihole"]
Zitat von @natuerlich:
NIC Config im Container wären hilfreich fürs Debugging.
Wie mache ich das? "ip a" ist ok, aber ist weiteres damit gemeint?Jepp, und evt. noch ein ip route
ping heise.de" aus der Container-Shell hat vor dem upgrade funktioniert, nicht mehr nach dem upgrade
Was sagt denn ein Ping auf eine nackte IP wie 1.1.1.1 aus dem Container? Läuft der auch nicht? Wenn doch hat der Container selbst ein DNS Problem.Wieso überhaupt noch ein pihole, der Mikrotik DNS hat inzwischen ein adlist feature an Bord was das gleiche resourcensparender erledigt.
Zitat von @natuerlich:
leider erfolglos. Der Container hat - ausschließlich durch das Upgarde auf 7.16 - ein DNS-Problem... und habe keine Idee, wie ich das einkreisen kann.
leider erfolglos. Der Container hat - ausschließlich durch das Upgarde auf 7.16 - ein DNS-Problem... und habe keine Idee, wie ich das einkreisen kann.
Das ist kein DNS Problem. Wenn noch nicht mal das Gateway auf Pings antwortet steht die grundlegende IP Kommunikation schon nicht.
Also als erstes mal die Firewall auf Durchzug stellen.
Eine cleane CHR VM mit pihole auf Router OS 7.16.1 läuft hier absolut problemlos, es muss also an deiner Konfiguration liegen die hier immer noch niemand vorliegen hat. Ein Export ist doch jetzt ehrlich gesagt nicht so schwer oder? Auf Rumgerate und Glaskugel polieren haben wir hier nämlich eher weniger Lust.
Hattest Du nicht geschrieben, dass Du auch einen pi-Hole am laufen hast im Container ;)
Virtuell im CHR Testlab immer auf Abruf und in ner Minute aufgesetzt 😉
Nun es können schon Fehlkonfigurationen vorhanden sein die sich halt erst jetzt bemerkbar machen. In den letzten Updates wurden da einige Bereinigungen vorgenommen die solche Fehler nun nicht mehr verzeihen .
Wie leider so oft können wir hier ohne was schwarz auf weiß von dir vorliegen zu haben nur raten, das ist mühsam und eines Admin-Forums nicht würdig 🫤.
Guts nächtle.
Wie leider so oft können wir hier ohne was schwarz auf weiß von dir vorliegen zu haben nur raten, das ist mühsam und eines Admin-Forums nicht würdig 🫤.
Guts nächtle.
Liefert in der Container Shell "pihole -d" auch eine Erfolgsmeldung?
Ja.Aus meiner Sicht sind dann drei FW Regeln für das Frontend nötig:
Diese Regeln sind komplett überflüssig wenn man nur LAN intern auf das Webinterface zugreifen möchte. Wer will das schon vom WAN aus tun??Mit TORCH solltest Du zum Interface=Container (wenn Du nach der Mikrotik-Anleitung vorgegangen bist) entsprechende TCP-Sätze vom PC/Laptop zum Container (Port 80) sehen.
Eine Anleitung brauche ich dafür ehrlich gesagt nicht.Zu und von Containern lässt sich ganz normal auf die 172.17.0.0/24 routen und mit der Firewall entsprechend der Traffic einschränken, wieso sollte ich da also noch mal überflussigerweise NAT ins Spiel bringen?! Überflüssiger overhead und nur vom Tutorial kopiert ohne darüber nachzudenken wozu diese dienen, denn diese sind eigentlich nur "optional" für den Zugriff vom WAN. Aber selbst da reicht eine einzige DSTNAT Regel denn ins WAN wird ja von Haus aus schon jede interne IP gesourceNATet. Dann noch simple Firewall Forward-Regeln zum Container um den Traffic zu beschränken. Ein zusätzliches Masquerade aus dem Containernetz raus ist da nur überflüssiger Overhead, und kostet den Router mehr CPU Power als eine Forward-Rule in der FW, da er jedes Paket anpacken und verändern muss.
Was lernt man daraus: Nicht alles blind aus Tutorials übernehmen sondern darüber nachdenken wozu diese genutzt werden, denn das sind nur mögliche Rezepte die aber nicht immer optimal für jeden Zweck sind.
Aber nun denn, wenn es für dich läuft, Glückwunsch, sich selbst helfen und debuggen ist imho immer noch die beste Methode wenn man mit Mikrotiks hantiert 👍
Schönen Sonntag.
Gruß catrell
Hallo natuerlich, hallo catrell….
Mein lieber Scholli, da habt ihr ja ganz schön was rausgehauen….
Danke für deine Note
Mein WE ist aktuell voll bis an die Ohren……
Nächste Woche finde ich Zeit, Eure Posts zu lesen und zu versuchen zu verstehen…. Ähnlich wie natuerlich, schreibe ich mir auch den interessierten Laien auf die Stirn.
Mirkotik ist so „umfangreich und anders“ gegenüber AVM als Beispiel.
Der Einstieg ist dann recht holprig und nur durch Unterstützer wie Ihr es seid, möglich.
Danke an Euch !
Wenn bei mir das Pihole läuft, würde ich Euch kurz uppen….
Grüße Marco
Mein lieber Scholli, da habt ihr ja ganz schön was rausgehauen….
Danke für deine Note
Mein WE ist aktuell voll bis an die Ohren……
Nächste Woche finde ich Zeit, Eure Posts zu lesen und zu versuchen zu verstehen…. Ähnlich wie natuerlich, schreibe ich mir auch den interessierten Laien auf die Stirn.
Mirkotik ist so „umfangreich und anders“ gegenüber AVM als Beispiel.
Der Einstieg ist dann recht holprig und nur durch Unterstützer wie Ihr es seid, möglich.
Danke an Euch !
Wenn bei mir das Pihole läuft, würde ich Euch kurz uppen….
Grüße Marco
Guten Morgen,
Container Shell? pihole -d ?
Ok... google sei dank.
nein, bei mir ist keine Erfolgsmeldung zu sehen.
Hab da eh mehrere Fehler, wenn ich mich das so angucke.
Gateway did not respond..random blocked domain...alles "noch" böhmische Dörfer für mich..
aber kein Grund zum Aufgeben.
Hier ein Auszug aus dem Log:
Warum PiHole keine IPv4 hat und wo die 8.8.8.8 her kommt ... keine Ahnung.
Sooo.. das für heute Vormittag... die Woche werde ich mich abends dran setzen...
Sobald ich was finde feedbacke ich.
Grüße
Marco
Container Shell? pihole -d ?
Ok... google sei dank.
Liefert in der Container Shell "pihole -d" auch eine Erfolgsmeldung?
nein, bei mir ist keine Erfolgsmeldung zu sehen.
Hab da eh mehrere Fehler, wenn ich mich das so angucke.
Gateway did not respond..random blocked domain...alles "noch" böhmische Dörfer für mich..
aber kein Grund zum Aufgeben.
Hier ein Auszug aus dem Log:
*** [ DIAGNOSING ]: Network interfaces and addresses
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group defau
lt qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
group default qlen 1000
link/ether 26:bd:13:81:e7:c2 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.2/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::24bd:13ff:fe81:e7c2/64 scope link
valid_lft forever preferred_lft forever
*** [ DIAGNOSING ]: Network routing table
default via 172.17.0.1 dev eth0
172.17.0.0/24 dev eth0 proto kernel scope link src 172.17.0.2
*** [ DIAGNOSING ]: Networking
[ ] IPv4 address(es) bound to the eth0 interface:
172.17.0.2/24
[ ] IPv6 address(es) bound to the eth0 interface:
fe80::24bd:13ff:fe81:e7c2/64
[i] Default IPv4 gateway(s):
172.17.0.1
* Pinging first gateway 172.17.0.1...
[ ] Gateway did not respond. (https://discourse.pi-hole.net/t/why-is-a-default-g
ateway-important-for-pi-hole/3546)
[i] Default IPv6 gateway(s):
*** [ DIAGNOSING ]: Name resolution (IPv4) using a random blocked domain and a kno
wn ad-serving domain
[ ] Failed to resolve glamourgrove.quest on lo (127.0.0.1)
[ ] Failed to resolve glamourgrove.quest on eth0 (172.17.0.2)
[ ] doubleclick.com is 142.250.185.78 via a remote, public DNS server (8.8.8.8)
*** [ DIAGNOSING ]: Name resolution (IPv6) using a random blocked domain and a kno
wn ad-serving domain
[ ] Failed to resolve www.pd.topprogit.xyz on lo (::1)
[ ] Failed to resolve www.pd.topprogit.xyz on eth0 (fe80::24bd:13ff:fe81:e7c2)
[ ] Failed to resolve doubleclick.com via a remote, public DNS server (2001:4860
:4860::8888)
*** [ DIAGNOSING ]: Discovering active DHCP servers (takes 10 seconds)
Scanning all your interfaces for DHCP servers
Timeout: 10 seconds
DHCP packets received on interface eth0: 0
*** [ DIAGNOSING ]: Pi-hole processes
[ ] lighttpd daemon is inactive
[ ] pihole-FTL daemon is inactive
*** [ DIAGNOSING ]: Pi-hole-FTL full status
[i] systemctl: command not found
*** [ DIAGNOSING ]: Lighttpd configuration test
[ ] No error in lighttpd configuration
*** [ DIAGNOSING ]: Setup variables
PIHOLE_INTERFACE=eth0
IPV4_ADDRESS=0.0.0.0
IPV6_ADDRESS=0:0:0:0:0:0
PIHOLE_DNS_1=8.8.8.8
QUERY_LOGGING=true
INSTALL_WEB_SERVER=true
INSTALL_WEB_INTERFACE=true
LIGHTTPD_ENABLED=true
PIHOLE_DNS_2=
CACHE_SIZE=10000
DNS_FQDN_REQUIRED=true
DNS_BOGUS_PRIV=true
DNSMASQ_LISTENING=local
BLOCKING_ENABLED=true
*** [ DIAGNOSING ]: Dashboard headers
[ ] Web interface X-Header: X-Header does not match or could not be retrieved.
*** [ DIAGNOSING ]: Pi-hole FTL Query Database
-rw-rw-r-- 1 pihole pihole 0 Nov 17 20:17 /etc/pihole/pihole-FTL.db
*** [ DIAGNOSING ]: Gravity Database
-rw-rw-r-- 1 pihole pihole 9.5M Nov 17 21:15 /etc/pihole/gravity.db
*** [ DIAGNOSING ]: Info table
property value
-------------------- ----------------------------------------
version 15
updated 1731876826
gravity_count 165493
Last gravity run finished at: Sun Nov 17 20:53:46 UTC 2024
Warum PiHole keine IPv4 hat und wo die 8.8.8.8 her kommt ... keine Ahnung.
Sooo.. das für heute Vormittag... die Woche werde ich mich abends dran setzen...
Sobald ich was finde feedbacke ich.
Grüße
Marco
Da stimmt schon das IP Setup bzw. Firewall auf dem Mikrotik nicht wenn der Container sein Gateway überhaupt nicht erreichen kann. ICMP in der Input-Chain und freigeschaltete Forward-Chain für den Container ist für den Test also mindestens erforderlich.
Hier musst du also als erstes ansetzen. Wahrscheinlich also entweder Bridge- oder Firewall Config-Fehler. Mangels vorliegender Config auch hier leider wieder Glaskugel-Bowling ala Bonheur.
Leute ihr fragt hier doch nach Hilfe, nicht wir 🙃.
Hier musst du also als erstes ansetzen. Wahrscheinlich also entweder Bridge- oder Firewall Config-Fehler. Mangels vorliegender Config auch hier leider wieder Glaskugel-Bowling ala Bonheur.
Leute ihr fragt hier doch nach Hilfe, nicht wir 🙃.
Warum PiHole keine IPv4 hat
Die hat er doch.und wo die 8.8.8.8
Kommt entweder von deinem DNS-Setup für den Container oder dem pihole und dessen Forwardern selbst.