OpenBSD rpi Router - DNS schlägt fehl

raiding

Well-Known Member
Hy Leutz!

Ich habe z.Zt. folgendes Problem:

Mein OpenBSD Router (Raspberry Pi 3) läuft mit einem USB 2.0 auf RJ45 Adapter (axe0) als externes Interface. Als Intern nutze ich, ganz normal, den internen RJ45 zu USB Adapter, den der Pi von Haus aus mit an Board hat (smsc0).

Nun habe ich die /etc/hostname.* der Interfaces editiert und ins jeweilige Netz gesetzt (intern 10.0.0.0/8, extern 192.168.178.0/24) und als Gateway (/etc/mygate) die IP meiner Fritzbox.

LAN <---> Switch <---> OBSD <---> Fritzbox <---> WAN

Klappt in der Theorie ganz wunderbar und hat in meiner vorherigen Unterkunft (Internat mit http-Proxy von Sophos) auch praktisch funktioniert (dort natürlich ohne die Fritzbox als Gate).

Nun kann ich zwar Google und das gesamte Internet anpingen (vom LAN, sowie vom rpi) aber DNS scheint nicht zu funktionieren.

Habe DNS in der pf.conf als OK deklariert(UDP und TCP) und die resolv.conf zeigt (im LAN und derzeit noch im rpi(wollte unbound aktivieren, sobald ich mein Problem hier gelöst habe)) auf OpenNIC Server.

Als Tutorial habe ich
https://www.openbsd.org/faq/pf/example1.html
genutzt, also das offiziele Router-Howto vom OpenBSD-Team, nur halt angepasst an meine oben erwähnten Bedürfnisse.

Was habe ich vergessen, bzw. wo ist mein Denkfehler?

Grüße

EDIT: Ich kann den Google-Server 8.8.8.8 anpingen, jedoch nicht google.de!
 
Welchen DNS-Server haben deine Clients und der RSPI denn eingetragen? Die Fritz-Box? 8.8.8.8? Läuft auf dem RSPI denn ein DNS-Server?
 
Welchen DNS-Server haben deine Clients und der RSPI denn eingetragen?

OpenNIC DNS-Server:

Code:
$cat /etc/resolv.conf
nameserver 85.159.213.210
lookup file bind

Das verrückte ist, wenn ich mit tcpdump pflog0 logge, sehe ich nur erfolgreiche Weiterleitungen auf diese Server.

Habe z.Zt. mein Produktivnetz direkt mit der Fritzbox verbunden, wo sich die Fritzbox via DHCP dann selbst als DNS einträgt ...
Wenn ich die Einträge entferne und nur noch die OpenNIC stehen lasse, dann funzt DNS auch nicht mehr ... aber müsste mein Router die DNS Anfragen nicht automatisch an meine Server von resolv.conf weiterleiten?

EDIT: Wenn ich meine Net-Config im LAN auf manuell setze, funktionieren die OpenNIC-DNS-Server!
 
Andere Idee: Man kann doch die FritzBox als Bridge Device konfigurieren oder? Dann hätte dein OpenBSD Router direkt die externe IP Adresse auf einem Interface.
 
Andere Idee: Man kann doch die FritzBox als Bridge Device konfigurieren oder? Dann hätte dein OpenBSD Router direkt die externe IP Adresse auf einem Interface.

Das ist leider keine Option: Der Router gehört meinem Mitbewohner. Auf ihn läuft auch der Vertrag und er wäre jetzt nicht so happy damit, wenn ich jetzt anfange an seiner Box rumzubasteln. Für ihn läuft ja alles.

Ausserdem wollte ich irgendwann auch mal den OpenBSD-Router als "Haupt-Router", also ohne irgendein Gerät dazwischen, welches zum ISP leitet, nutzen. Insofern würde ich den RPI möglichst nachhaltig konfigurieren wollen.
 
Habe DNS in der pf.conf als OK deklariert(UDP und TCP) und die resolv.conf zeigt (im LAN und derzeit noch im rpi(wollte unbound aktivieren, sobald ich mein Problem hier gelöst habe)) auf OpenNIC Server.
Poste mal
Code:
pfctl -vvnf /etc/pf.conf        # sind 2 v's kein w :)

mit /etc/resolv.conf
Code:
nameserver 8.8.4.4
nameserver 8.8.8.8
hast dus auch schon getestet?

aber müsste mein Router die DNS Anfragen nicht automatisch an meine Server von resolv.conf weiterleiten?
Sind die Bereichtigungen der *.conf noch standart?

Falls du unbound konfiguriert hast, bitte /var/unbound/etc/unbound.conf posten (ist denke ich für deine Zwecke jedoch nicht nötig).
 
Hast du einen Eintrag bei der Fritzbox für das "reverse routing" gemacht? Sprich weiss die Fritzbox wo sie den Traffic für das Subnetz 10.0.0.0/8 routen muss?
 
Moin!

Ich fange mal mit meinen Firewallregeln an:

Code:
# pfctl -vvnf /etc/pf.conf                                                                       
Loaded 714 passive OS fingerprints
int_if = "smsc0"
ext_if = "axe0"
lan_ip = "smsc0:network"
ALLOW_OUT_TCP = "{ 21, 80, 115, 443 }"
ALLOW_OUT_UDP = "{ 53, 123 }"
table <broken> { 0.0.0.0/8 10.0.0.0/8 127.0.0.0/8 169.254.0.0/16 172.16.0.0/12 192.0.0.0/24 192.0.2.0/24 192.18.0.0/15 192.88.99.0/24 192.168.0.0/16 198.51.100.0/24 203.0.113.0/24 224.0.0.0/4 224.0.0.0/3 240.0.0.0/4 }
set block-policy drop
set loginterface axe0
set fingerprints "/etc/pf.os"
Loaded 714 passive OS fingerprints
set skip on { lo0 }
set optimization aggressive
@0 match in all scrub (no-df random-id max-mss 1440)
@1 match out all scrub (random-id)
@2 match out on axe0 inet from 10.0.0.0/8 to any nat-to (axe0:*) round-robin
@3 block drop in log quick on axe0 from <broken:0> to any
@4 block drop in log quick on axe0 from no-route to any
@5 block drop in log quick on axe0 from urpf-failed to any
@6 block drop in log quick on ! axe0 inet from 192.168.178.0/24 to any
@7 block drop in log quick inet from 192.168.178.100 to any
@8 block return out log quick on axe0 from any to <broken:0>
@9 block return out log quick on axe0 from any to no-route
@10 block drop log all
@11 block drop quick inet6 all
@12 block drop in on ! lo0 proto tcp from any to any port 6000:6010
@13 block drop in quick inet from any to 255.255.255.255
@14 pass out log on axe0 proto tcp from any to any port = 21 flags S/FSRA modulate state
@15 pass out log on axe0 proto tcp from any to any port = 80 flags S/FSRA modulate state
@16 pass out log on axe0 proto tcp from any to any port = 115 flags S/FSRA modulate state
@17 pass out log on axe0 proto tcp from any to any port = 443 flags S/FSRA modulate state
@18 pass in log on smsc0 proto tcp from any to any port = 21 flags S/FSRA modulate state
@19 pass in log on smsc0 proto tcp from any to any port = 80 flags S/FSRA modulate state
@20 pass in log on smsc0 proto tcp from any to any port = 115 flags S/FSRA modulate state
@21 pass in log on smsc0 proto tcp from any to any port = 443 flags S/FSRA modulate state
@22 pass out log on axe0 proto udp from any to any port = 53
@23 pass out log on axe0 proto udp from any to any port = 123
@24 pass in log on smsc0 proto udp from any to any port = 53
@25 pass in log on smsc0 proto udp from any to any port = 123
@26 pass out log on axe0 proto icmp all
@27 pass in log on smsc0 proto icmp all
@28 block drop in log quick on axe0 inet proto icmp all icmp-type redir
@29 pass in log on smsc0 inet proto tcp from any to 10.55.88.1 port = EGAL flags S/SA

Allerdings habe ich mehr und mehr die Befürchtung, dass die Fritzbox die Wurzel allen Übels ist .... Sobald ich die Clients direkt an die Box hänge und DHCP aktiviere (bzw. die Fritzbox als DNS eintrage) funktioniert alles.

Wenn ich meinen "WAN" Adapter des Pi(axe0), auf DHCP stelle, holt er sich zwar den Domänennamen, aber keine IP. Ebenfalls kann ich die Box nicht anpingen .... Verrückt. Wenn ich die (Linux-)Clients direkt dran hab, ist alls wunderbar ....

resolv.conf/Berechtigungen kann ich ausschließen und DNS-Server habe ich noch nicht eingerichtet.

Hast du einen Eintrag bei der Fritzbox für das "reverse routing" gemacht? Sprich weiss die Fritzbox wo sie den Traffic für das Subnetz 10.0.0.0/8 routen muss?

Die Fritte muss ja nur den Traffic des OBSD-Routers weiterleiten und der ist ja mit der WAN-Schnittstelle im /24 Subnetz. Das NATting aus dem /8 er Netz übernimmt ja schon der mein OBSD-Router - ausserdem klappt ICMP ja auch.

Alles gut, bloß DNS bockt rum ...
 
Code:
@6 block drop in log quick on ! axe0 inet from 192.168.178.0/24 to any
Macht die Zeile evtl Probleme?

Code:
@13 block drop in quick inet from any to 255.255.255.255
DHCP geht glaub ich über Absender 0.0.0.0 -> 255.255.255.255, blockst du damit evtl deine IP-Zuweisung? Port 67/68 als UDP sind auch nicht frei?

Bin müde, hoffe ich vertue mich gerade nicht
 
Code:
@6 block drop in log quick on ! axe0 inet from 192.168.178.0/24 to any
Macht die Zeile evtl Probleme?

Code:
@13 block drop in quick inet from any to 255.255.255.255
DHCP geht glaub ich über Absender 0.0.0.0 -> 255.255.255.255, blockst du damit evtl deine IP-Zuweisung? Port 67/68 als UDP sind auch nicht frei?

Bin müde, hoffe ich vertue mich gerade nicht

Regel 6 ist das Antispoofing. Habs jetzt mal testweise deaktiviert, hat allerdings nix gebracht.

Mit der Broadcastadresse hast du selbsterständlich recht. Hatte ich zwischendurch auch ausgeschaltet, als ich DHCP probiert habe, hat allerdings auch nüscht gebracht.

Port 53 habe ich nun auch als TCP.

Hab den rpi nach all euren Änderungsvorschlägen nochmal neu gestartet:

Ping auf die IP der Fritzbox geht, genau wie auf "google.de" immer noch nicht. 9.9.9.9 (oder andere IPs) macht er.

Warum kann ich die IP der Fritte net anpingen? Habe auch schon NATting ins 192.168.178er Netz probiert:

Code:
 match out on egress inet from $lan_ip nat-to (egress:network)

Ohne Erfolg
 
Was sagt denn ``route show''?

Was passiert, wenn Du mal die default pf.conf nimmst? ``pfctl -f /etc/example/pf.conf''. Kannst Du dann vom RPI aus ``ping google.com'' anpingen?

Setze mal ``nameserver 9.9.9.9'' in deine /etc/resolv.conf. Falls Du z.B. 8.8.8.8 in der Fritzbox eingetragen hast, darfst Du nicht die gleichen nameserver im RPI nutzen. Ich weiss auch nicht, warum das bei der Fritzbox so ist.
 
Kannst du auf der Fritz mal schauen, was da als Freigabeprofil für deinen OpenBSD (die externe Adresse deiner OpenBSD Box) eingetragen ist?
Sollte bei "Internet" -> "Filter" zu sehen sein, Spalte "Gerät" die Punkte "Internetnutzung" und "Zugangsprofil"

Die sollten auf "unbeschränkt" und "Standard" stehen, die Onlinezeit auf "unbegrenzt"; ggf ist da eine Default-Einschränkung konfiguriert ("alle neuen Geräte")
 
Nice, Danke! :)

9.9.9.9 funktioniert nun als DNS. Zwar nur auf dem rpi, aber das ist OK. Wollte nun eh einen DNS-Cache mit unbound aufsetzen.

Gibt es da irgendeinen besonderen Trick mit pf?

Meine Clients erhalten leider immer noch keine Einträge. Habe den unbound - wie im openbsd-router Tutorial beschrieben - konfiguriert und alle resolv.conf verweisen auf meinen Router (intern funktioniert die Namensauflösung mit 127.0.0.1 auch wunderbar!).

Gruß
2IE39
 
Sorry für den Doppelpost. Wollte nur eben bescheid sagen, dass ich das Problem gelöst habe.

Clients bekommen nun auch Internet.

Thank you @all!
 
Und was wars? Vollständige Threads sind schöner für Leute, die ein Problem googeln :)

Eine falsche Regel in der pf.conf. DNS-Anfragen wurden am internen Interface meines Routers abgewiesen. Aber nun klappt alles ganz gut.

DNS abfragen gehen vom LAN nicht mehr in Richtung WAN, sondern werden von unbound via 9.9.9.9 aufgelöst und lokal gecached.

So wollte ich mein Netz haben :)
 
Zurück
Oben