Keine DNS Namensauflösung aus Jail heraus möglich

floyd

New Member
Hallo, ich komme leider nicht weiter und könnte ein paar Tipps gebrauchen, eine intensive Suche im Internet hat mich bisher nicht weitergebracht.

Mein System:
FreeBSD 11.0 Release auf einem Raspberry Pi 2, ich möchte darauf einen eigenen Mail- und Webserver betreiben.

Folgendes Problem:
Ich bekomme aus meinen Jails heraus keine DNS Namensauflösung, daher kann ich auch keine Ports in der Jail installieren.

Pingen auf IP-Adressen aus der Jail heraus funktioniert normal, auch ins Internet. Die Datei /etc/resolv.conf ist in der Jail vorhanden und angepasst, hier habe ich als nameserver die IP meines AVM-Routers (192.168.178.1) und auch externe DNS-Server ausprobiert (z.B. 8.8.8.8).

In der Jail ist in der /etc/rc.conf als Defaultrouter das Hostsystem eingetragen, das Hostsystem ist als Gateway eingerichtet.

Das Hostsystem hat eine IP-Adresse vom AVM-Router per DHCP zugewiesen bekommem (192.168.178.27), die Jail ist mit der IP 10.0.0.1 an das Loopback Interface lo0 des Hostsystems gebunden, hierzu steht in der /etc/rc.conf folgender Eintrag:

ifconfig_lo0_alias0 =" inet 10.0.0.1/ 32"

Damit die Jail erreichbar ist habe ich die PF-Firewall entsprechend konfiguriert (pf.conf anbei), hier ein Auszug:

if = "{ ue0 }"
jails = "{ 10.0.0.1 }"
ip = 192.168.178.27
open_tcp = "{ 22, 25, 53, 80, 110, 143, 443 }"
open_udp = "{ 22, 53, 80 }"
...
nat on $if proto {tcp udp icmp} from $jails to any -> $ip
...
pass in on $if proto tcp from any to any port $open_tcp keep state
pass in on $if proto udp from any to any port $open_udp keep state
pass out quick all keep state

Vielleicht hat ja jemand noch eine Idee oder erkennt einen Fehler in meiner Konfiguration, dafür schonmal vielen Dank im voraus.
 

Anhänge

  • pf.conf.txt
    1,9 KB · Aufrufe: 285
Deine nat Regel passt nicht: "nat on ue0 ..." - das Jail nutzt jedoch einen lo0 Alias.

Nimm mal die allgemeinere Regel "nat from jails to !jails -> ($if)".

Generell erscheint die Syntax nicht korrekt, vllt irre ich da aber auch. Müsste es nicht so stehen:

nat on ($if) proto { tcp, udp, icmp } from <jails> to any -> ($ip)

So lese ich die man pf.
 
Hallo Binfort,

wie gesagt ein ping auf z.B. 8.8.8.8 (Google DNS) funktioniert, von daher denke ich funktioniert die NAT-Regel.
Von der Syntax ist das auch OK, man kann die Klammern weglassen und auch die Kommas. Die spitzen Klammern sind für Tables, jail ist aber ein Macro daher $.

Eine PF Statusabfrage ergibt folgendes für die NAT Regeln und zeigt auch das eine Verbindung zum DNS-Server auf Port 53 aufgebaut wird

TRANSLATION RULES:
nat on ue0 inet proto tcp from 10.0.0.2 to any -> 192.168.178.27
nat on ue0 inet proto udp from 10.0.0.2 to any -> 192.168.178.27
nat on ue0 inet proto icmp from 10.0.0.2 to any -> 192.168.178.27

STATES:
all udp 192.168.178.27:54983 (10.0.0.2:51355) -> 8.8.8.8:53 MULTIPLE:MULTIPLE

Es kommt wohl keine Rückantwort des DNS Servers zur Jail durch.
 
Ganz kurz:
Code:
table <bruteforce> persist 
block in quick from <bruteforce> 
pass in on $ext_if inet proto tcp from any to port 22 \ 
flags S/SA keep state \ 
(max-src-conn 10, max-src-conn-rate 10/30, overload <bruteforce> flush)
Code:
root crontab: 
* * * * * /sbin/pfctl -t bruteforce -T expire 600 > /dev/null 2>&1
Würde evtl deinen sshguard ersetzen, nur so off-Topic am Rande.


Zur pf.conf, ich weiß nicht ob es OpenBSD spezifisch ist, aber ich würde alles mit einer match Regel abdecken:
Code:
match out on egress inet from !(egress:network) to any nat-to (egress:0)

Nach kurzem Überfliegen der Regeln schätze ich mal, dass dir ein rdr zurück zur Jail fehlt.


Hoffe es hilft dir weiter und ich irre mich nicht :)
 
Zurück
Oben