OpenBSD-Router Teil 2

Herakles

Profifragensteller
block in on $lankarte all

Man sollte nur auf einem (in diesem Falle: externen) Interface filtern. Daher ist die obige Regel überflüssig.

pass in on $netzkarte inet proto tcp from any to any port $dienste flags S/SAFR keep state label ServicesTCP

DNS läuft z.B. über UDP-Port 53 und hier gestattest du nur dem Protokoll TCP den Durchgang.

Also: etwas mehr gestatten!

DNS-Prokoll sollte auf alle Fälle frei sein.

PS: An CW: Hab das FAQ gelesen, echt!

Ja, das sehe ich :D

Gruß

CW

P.S.

Du hast auch eine gut funktionierende Bridge aufgebaut, oder?

Denn ohne ein logisches Device klappt es auch mit perfekten Regeln nicht.
 
Zuletzt bearbeitet von einem Moderator:
Sorry Herakles, habe auf den Button "ändern" geklickt und somit deine Frage als meine Antwort umgeformt. *Asche auf den Schädel*

Sorry :(

Vielleicht sollte ich auch eine FAQ lesen ---> "über den guten Umgang mit Foren-Buttons als Mod" :D

Grüße

CW
 
Zuletzt bearbeitet:
MAn sei erhaben über meine Dummheit, aber was heißt das:

Du hast auch eine gut funktionierende Bridge aufgebaut, oder?

Denn ohne ein logisches Device klappt es auch mit perfekten Regeln nicht.

Bridge? Ich hab was erstellt, wovon ich nichmal mehr weiß, daß es das gibt? Hilfe!

Haha, ich lach mich tot, ey!
 
Original geschrieben von Herakles
MAn sei erhaben über meine Dummheit, aber was heißt das:



Bridge? Ich hab was erstellt, wovon ich nichmal mehr weiß, daß es das gibt? Hilfe!

Haha, ich lach mich tot, ey!

Hmmm ... also ich fasse es kurz zusammen, wie ich vorgehe, wenn ich einen Router aufbaue:

1.) OpenBSD installieren (ist ja klar)

2.) Interfaces einzeln konfigurieren (in /etc die hostname.IF für jedes einzelne Interface anlegen)

Schaue dir dazu die Manpage von hostname.if an.

3.) Danach füge ich die gewünschten Interfaces zu einer bridge zusammen.

Schaue dir dazu die Manpages zu: bridge und brconfig an.

4.) Und am Ende mache ich alles mit PF klar.

Bist du so (oder so ähnlich) vorgegangen oder hast du etwas ausgelassen?

Du musst wissen, dass Hardware und Software zusammenspielen müssen.

Erst einmal baust du dir die Hardware-Basis auf (die Bridge) und anschließend sorgst du für Ordnung unter deinen Protokollen/Clienst usw.

Gruß

CW

P.S. ich nehme die Angelegenheit ernst und daher frage ich über ALLE Einzelheiten nach, ok?

Und ich mache mich weder über dich noch über jemand anders lustig, sondern versuche dir mit meinen bescheidenen Mitteln zu helfen.
 
Zuletzt bearbeitet:
Okay, noch ein kleines Problem.

Das hatten wir in dem anderen Thread schon und eigentlich wars auch weg, aber jetzt isses auf einmal wieder da. Nun gut:

DNSMASQ: bind failed: Address already in use
router demasq: bind failed: Adress already in use
router demasq: FAILED TO START UP

Also, ein DNS Konflikt. Aber wo kommt der her? Wieso ist die Adresse schon in use? Die Fehlermeldung rührt hierher:

/usr/local/sbin/dnsmasq -i ne3

ne3 is meine interne Netzwerkkarte, also fürs LAN.

Irgendne Idee, in welchen Script ein Fehler stecken könnte?


Gruß Herakles
 
Shit, hab grade ne Idee:

Kann das sein, daß der Fehler auftritt, wenn der Rechner nicht ans Internet angeschlossen ist?
 
bind failed: Address already in use
Das sagt Dir doch genau, was da schief geht, nämlich dass die lokale Adresse, an die sich die Applikation binden will, schon von einem anderen Prozess belegt ist. Das hat nichts damit zu tun, ob Dein Rechner ans Internet angeschlossen ist (ausser indirekt).

Ich vermute jetzt einfach mal, dass sich der dnsmasq an den Standard DNS port 53 binden will. Bitte überprüf doch mal per netstat -an, ob nicht schon jemand auf port 53 lauscht...
 
AAAALLLLSSOOOOOOO

Alles aufzulisten, was der mir bei netstat sagt, ist sicher zuviel, ich versuche mal selbst zu filtern:

tcp 0 0 192.168.0.1.53 *.* LISTEN
tcp 0 0 127.168.0.1.53 *.* LISTEN

...


udp 0 0 192.168.0.1.53 *.*
udp 0 0 127.168.0.1.53 *.*

Ich denke, das reicht, oder?

Herakles
 
Es wird wohl Bind sein der hier schon läuft.
In der rc.conf sollte folgendes stehen
Code:
named_flags=NO          # for normal use: ""

Veit
 
Ich denke, das reicht, oder?
Ja, das waren die richtigen Zeilen. Am einfachsten installierst Du dir jetzt mal 'lsof' und findest dann mit
Code:
lsof -i :53
heraus, welcher Prozess der Bösewicht ist.

Ich bin nicht der Riesen-OpenBSD Experte, evtl. gibt es noch einen anderen Weg mit Bordmitteln ?!
 
Und ab gehts:

router#fstat | grep :53
named named 14054 7* internet6 dgram udp *:53
named named 14054 8* internet6 stream tcp 0xd0b2d2b0 *:53
named named 14054 9* internet dgram udp 127.0.0.1:53
named named 14054 10* internet stream tcp 0xd0b2d408 127.0.0.1:53
named named 14054 11* internet dgram udp 192.168.0.1:53
named named 14054 12* internet stream tcp 0xd0b2d560 192.168.0.1:53
router#

Das wars soweit. Ich hoffe, das hilft Euch weiter!

Gruß


Herakles
 
Jetzt wirds peinlich. Erstens: Wodran siehst Du, daß ein "named" läuft, was ist ein named, wie kill ich den?

Oh oh, ich sehe mich schon wieder recherchieren im Netz...


Herakles
 
pf und named - Problem / kein Routen möglich

So. Jetzt bin ich mit meinem Latein am Ende. Das kann doch nicht so schwer sein, einen simplen Router mit OpenBSD aufzusetzen. Seit mehr als einem Monat schlage ich mich schon damit rum und es wird und wird nix. Letzter Versuch jetzt! ALSO:

1. Problem:

In einem anderen Thread (OpenBSD - Installation / OpenBSD-Router Teil 2, http://www.bsdforen.de/forums/showthread.php?s=&threadid=1702&perpage=15&pagenumber=1 ) habe ich zum Schluß ein Problem der folgenden Natur gehabt:

DNSMASQ: bind failed: Address already in use
router demasq: bind failed: Adress already in use
router demasq: FAILED TO START UP

current riet mir letztendlich dazu, den laufenden named zu killen. Sobald ich das jedoch mache, ist der Chaching Nameserver deaktiviert. Nach dem killen liefert mir


zwar richtgerweise keine Ausgabe mehr, aber ein simples ICMP basiertes anpingen eines Hosts


funktioniert danach nicht mehr. Das kann also nicht des Problems Lösung sein. Außerdem wird durch den o.g. kill-Befehl der named erst nach dem booten gekillt, also manuell. Das Problem sollte aber nach Möglichkeit dauerhaft beim booten schon erledigt sein.


2. Problem:

Es ist mir von allen Clients im Netz hinter dem Router möglich, irgendwelche Server im lokalen Netz oder im Internet anzupingen, sämtliche andere Dienste bleiben mir verwehrt. Kein ICQ, kein ftp, kein www, NIX!

Damit Ihr Euch in Ruhe ein Bild von meiner Situation verschaffen könnte, werfe ich mal meine selbst entwickwelte pf.conf in den Raum:

## Makros
netzkarte = "rl0"
lankarte = "ne3"
herakles = "192.168.0.10"
junk_zero = "192.168.0.11"
kobra = "192.168.0.12"
tille = "192.168.0.13"
freddi = "192.168.0.16"
dienste = "{ ssh, ftp, auth, http, www }"


## Tables
table <strasse> { 192.168.0.10 192.168.0.11 192.168.0.12 192.168.0.13 192.168.0.16 }


## Options
set block-policy return #wenn filter zutrifft, wird icmp unreachable gemacht
set loginterface $netzkarte
set optimization conservative #mehr speicher und cpu nutzung, dafuer werden idle connections gehalten
set timeout interval 10 #nach X sekunden werden unvollstaendige pakete geloescht
set timeout frag 30 #nach X sekunden laeuft ein unyusammengesetztes paket ab und wird in timeout interval geschoben


## Scrub - saeubern, waschen - fuegt fragmentierte pakete zusammen, schmeisst TCP pakete raus, die ungueltige flags haben - evtl. probleme bei einigen spielen
scrub in on $netzkarte all random-id min-ttl 15 max-mss 1400 fragment reassemble


## NAT
nat on $netzkarte from $lankarte/24 to any -> ($netzkarte)
#nat on $Ext from $IntNet to any -> $Ext static-port


block in on $lankarte all
pass in on $lankarte from <strasse> to any
block in on $netzkarte all
pass in on $netzkarte inet proto tcp from any to any port $dienste flags S/SAFR keep state label ServicesTCP
# block in on $lankarte all
# pass in on $lankarte from <strasse> to any
#block in on $netzkarte all
#pass in on $netzkarte inet proto tcp from any to any port $dienste flags S/SAFR keep state label ServicesTCP
#pass in on $netzkarte inet proto udp from any to any port $dienste keep state label ServicesUDP
#pass in on $netzkarte inet proto udp from any to any port 53 keep state
#pass in on $netzkarte inet proto tcp from any to any port 80 flags S/SAFR keep state
pass in on $netzkarte all
pass in on netzkarte all
pass out on $netzkarte all
pass in on $lankarte all
pass out on $lankarte all
#pass in all
#pass out all
# pass in on $netzkarte inet proto { tcp, udp, icmp } from any keep state
# pass out on $netzkarte inet proto { tcp, udp, icmp } to any keep state
# pass in on $lankarte all
# pass out on $lankarte all

An den vielen, vielen Rauten bei den Firewallregeln könnt Ihr sehen, wie verzweifelt ich sein muß, daß ich das alles schonmal ausgetestet habe... Ich weiß wirklich nicht weiter, selbst studieren diverser FAQs, auch die offizielle pf-FAQ bringt mich nicht weiter. So langsam glaube ich schon gar nicht mehr an einen Fehler in der pf.conf, sondern an was anderes viiiieeeel trivialeres. An meiner FH hab ich auch schon diverse Pauker gefragt, ob die nich Ahnung von pf bei OpenBSd hätten, aber ich hab wohl nur Pech...

VERZWEIFELTER HILFERUF! Ich komme echt nicht weiter! Ich hätte so gern nen sicheren Router für meine TDSL-Flat...




Ach ja, den Caching Nameserver und auch die ganze andere Grundkonfiguration des Routers habe ich hierher:

http://www.fmi.uni-passau.de/~grafj/openbsd/3.3

Ich hoffe, jemand entdeckt einen Fehler oder weiß mir sonstirgendwie zu helfen. Ich kack ab...


Grüße aus dem schönen schönen Münsterland


Herakles
 
-schalt mal den dns auf dem router aus.
-in die pf.conf folgendes:

net_int="192.168.0.0/24"
.
. usw.
.
nat on tun0 from $net_int to any -> tun0

pass in all
pass out all

-pf.conf einladen
-auf den rechnern hinter der firewall einen dns server (z.b. t-online) eintragen.
-ping www.xyz.com
-uns resultat mitteilen.
 
Zu Deinem 1. Problem: Du musst schon wissen was Du willst:

- entweder Du fährst einen eigenen named, dann kannst Du keinen dnsmasq benutzen *und* musst den DNS Server deines Providers benutzen

- oder Du fährst dnsmasq

Mir ist allerdings nicht klar, warum dein named trotz angeblich korrekt eingetragener Flags startet, da muss mal ein OpenBSD Experte ran...
 
So, also:

1. Ich stelle den Caching Nameserver aus (indem ich in /etc/rc.local vor folgende Zeile eine Raute mache):

/usr/local/sbin/dnsmasq -i ne3

Dann stelle ich auf den Netzwerkclients die DNS-Server Konfiguration auf 194.25.2.129, also den T-Online-Server.

Ergebnis: vom Router selbst aus ist Pingen von www.openbsd.org möglich, bekomme Antworten. Wenn ich selbiges vom Netzwerkclient mache, erhalte ich nur die Meldung "Host nicht erreichbar", es wird mir also nichtmalmehr der "www-name" in eine IP aufgelöst.

2. Ich stelle den Caching Nameserver aus (wie oben) und stelle auf den Netzwerkclients die DNS-Konfig auf 192.168.0.1.

Ergebnis: vom Router aus ist pingen wie in 1. beschrieben möglich, mit selbem Ergenbnis. Beim Pingen von Netzwerkcleints aus wird der "www-name" in eine IP aufgelöst, allerdings bekomme ich keine Antwort von dem im Netz angeforderten Server (beispielsweise www.openbsd.org). Nur die Meldung "Zeitüberschreitung der Anforderung" kommt.


1. und 2.:
Beim booten wird trotz ausgeschaltetem DNS (wie beschrieben, mit der Raute) beim Booten gemeldet:


Auch ein

liefert ein Ergebnis, und zwar:
router#fstat | grep :53
named named 30427 7* internet6 dgram udp *:53
named named 30427 8* internet6 stream tcp 0xd0b2d2b0 *:53
named named 30427 9* internet dgram udp 127.0.0.1:53
named named 30427 10* internet stream tcp 0xd0b2d408 127.0.0.1:53
named named 30427 11* internet dgram udp 192.168.0.1:53
named named 30427 12* internet stream tcp 0xd0b2d560 192.168.0.1:53
router#

Es ändert sich also augenscheinlich nur die Ziffernkombination hinter dem 2. "named". (Die hexadezimalen Zahlen hab ich nicht überprüft :rolleyes: ) Es läuft also immer noch ein named, right?

3. Ich stelle den Caching Nameserver wieder an (nehme also die Raute wieder weg), erhalte ich beim Booten wieder die Fehlermeldung mit dem "bind" wie im vorherigen Thread beschrieben. Dennoch ist pingen von allen Clients und vom Router selbst möglich (als DNS-Server 192.168.0.1 eingestellt).

In keinem Fall ist irgendein anderer Dienst verfügbar, also keine Browserfunktion, ICQ oder sonstwas.


Ich hoffe, ds reicht an Infos fürs Erste. Fragt nach, wenn Euch noch mehr einfällt, was ich testen könnte, ich werde sofort an den Router fliegen!!!!


Herakles
 
Noch schnell eine wohl nicht ganz unwichtige Mitteilung:

Ich habe meine o.g. pf.conf nach Kith's Vorstellungen abgeändert, allerdings hatte ich beim ersten Versuch folgende Fhlermeldung bekommen:

no IP adress found for tun 0
no IP adress found for tun 0
/etc/pf.conf:28: translation rule requires '->adress'
syntax error (...)

Deshalb hab ich die pf.conf in genannter Zeile wie folgt abgeändert für meine oben genannten Versuche:

nat on tun0 from $net_int to any -> ($netzkarte)

Das wars.
 
Hi,

DNS scheint ja zu funktionieren (auf welche Weise nun auch immer,
egal ob 'dnsmasq' oder caching named).

gib mal output von 'sysctl net.inet.ip.forwarding'

Ich koennte wetten, dass das auf '0' steht :-)

Wenn ja, ist das dein Problem.
Setzen mit 'sysctl -w net.inet.ip.forwarding=1' und in /etc/sysctl.conf
eintragen (steht da kommentiert drin).

Wenn das "alles" nix hilft, bei einem ping (mit funktionierendem DNS)
mal auf ne3 mit tcpdump kucken, ob das da ankommt. Und das
gleiche mit tun0 (tcpdump -nvvi tun0 icmp). (ping vom netzwerk client
aus, sonst isses recht sinnfrei ;) )

Kommt auf tun0 trotz forwarding "nix raus", blocked entweder deine pf.conf
oder das routing ist komplett im sack.
Geht was raus, das gleiche Spiel nochmal auf ne3, um zu kucken, ob
die ping-antwort-packet (echo reply) auch auf's LAN zum netclient
geschickt werden.

HTH,
(PS: muss mir langweilig sein... :>)
 
OUTPUT:

sysctl net.inet.ip.forwarding = 1

(Die betreffende Zeile in der pf.conf sieht folgendermaßen aus:

nat on tun0 from $net_int to any -> ($netzkarte)

und zwar aus den Gründen, die bei meinem letzten Posting genannt wurden.)

Und JETZT kommts, ich schnall gar nix mehr!

router#tcpdump -nvvi ne3 icmp
<ZEIT> 192.168.0.10 > 129.128.5.191 : icmp : echo request (id:2 seq:8) (ttl:128, id 4xxxx)

KEIN reply...

und:

router#tcpdump -nvvi tun0 icmp
<ZEIT> 192.168.0.10 > 129.128.5.191 : icmp : echo request (id:2 seq:12) (ttl:128, id 4xxxx)

Ebenfalls KEIN reply...

Nach meinem Verständnis heißt das doch: 192.168.0.10 schickt den request an den router und der routet das auch weiter, nur erhält er keine Antwort, right? Wenn ich aber direkt vom Router pinge, erhalte ich sehr wohl eine Antwort...??? Ich nix schnallen...

Auch ein anpingen des Routers selber vom Client "ping 192.168.0.1" gibt mir antworten auf dem Clientterminal.

Ach ja:

/usr/local/sbin/dnsmasq -i ne3

ist in der rc.local auskommentiert, sprich hat ne Raute am vorderen Ende!
 
Ok, also das forwarding funktioniert :-)

Aber, Du siehst ja bei dem tcpdump auf tun0, dass das packet immer
noch eine 192.168 (also "interne") Adresse hat (tcpdump kommt hier NACH
pf) und damit bekommst Du auch keine Antwort ;-)

Lt. der pf.conf von frueher ist aber $netzkarte als rl0 definiert. Du brauchst
da aber tun0, also noch ein "tun_if=tun0" und "nat on $tun_if from $net_int to any -> ($tun_if)".

Und dann nochmal schauen, dass pf auch wirklich enabled ist, und die
regel passend geladen ist ("pfctl -si","pfctl -sn")

Das sollte es dann aber sein ;-)

Achja, vom Router aus funktioniert es, weil der fuer einen solchen
ping "automagisch" die adresse von tun0 fuer die source-adresse benutzt.
Wenn Du auf dem Router "ping -I 192.168.0.1 129.128.5.191" machst, wird
auch keine Antwort kommen. Btw, das liegt daran, dass Adressen wie
192.168.0.0/16 im Internet nicht geroutet werden.

HTH (der thread wird ja sonst ewig),
 
ES FUNKTIONIERT!!!! Nach 4 Wochen! Oh mann, dnake! jetzt gehts also an die korrekte Einstellung der pf!!!!

ENDLICH! Mein Gott, was ne Erleichterung....


Herakles
 
Zurück
Oben