http-Zugriff auf Client hinter OpenBSD-ROuter

Herakles

Profifragensteller
Hi!!

Ich habe nach dieser Anleitung ( http://www.fmi.uni-passau.de/~grafj/openbsd/3.3/ ) von Jürgen Graf einen OpenBSD-Router gebastelt.

Funktioniert alles sehr fein, ich kann von allen Clients aus dem lokalen Netz Internetseiten anpingen (der DNS wird also erreicht). Allerdings bleiben mir alle anderen Dienste verweigert, ich kann also keine http-Seiten auf einem Client im Netzwerk anzeigen, kein ICQ starten, keine Mails abrufen.

Gibt es da evtl. einen Grundsätzlichen Stolperstein, über den ich gefallen sein könnte? Ich hab die in der Anleitung vorgegebene pf.conf übernommen und der Anleitung entsprechend auch abgeändert. Nix tuts....

Danke im Voraus


Dennis
 
Original geschrieben von Herakles


Gibt es da evtl. einen Grundsätzlichen Stolperstein, über den ich gefallen sein könnte? Ich hab die in der Anleitung vorgegebene pf.conf übernommen und der Anleitung entsprechend auch abgeändert. Nix tuts....

Danke im Voraus


Dennis

Bevor ich dir versuche zu helfen, möchte ich dich darauf hinweisen, dass du keinerlei Fehlermeldungen oder Logs gepostet hast, was viel zu wenig ist.

Aber O.K. ... diesmal übersehen wir das ;) ... aber nur dieses eine Mal!

Bitte überprüfe folgendes:

a) Haben deine Clients den gleichen Router in /etc/mygate eingetragen?

b) Haben deine Clients alle den FQDN (fully qualified domain name) in der /etc/hosts?

c) Läuft der Apache auf der Client-Maschine die du von anderen Client-Maschinen aus ansprechen willst?

d) Überprüfe die Logs deines Paketfilters auf etwaige Block-Vorgänge?

e) wenn du mehrere Netzkarten auf dem Router/Client zusammengefasst zu einem logischen Device (einer Brücke) hast, überprüfe, ob die bridge läuft.


Wenn du dies erledigt hast und trotzdem keine Verbesserung der Lage ersichtlich ist, dann poste bitte die letzten Logs deines Paketfilters und die Apache-Logs.

Da du nicht gesagt hast, was du mit "http-Seiten anzeigen" meinst, gehe ich davon aus, dass du auf einem der Clients einen Apache-Server laufen lässt.

Wenn nicht, dann bitte beschreibe detailliert, welche Maschine was macht bzw. was sie verweigert zu machen.

Gruß

CW
 
Zuletzt bearbeitet:
@CW:
Da du nicht gesagt hast, was du mit "http-Seiten anzeigen" meinst, gehe ich davon aus, dass du auf einem der Clients einen Apache-Server laufen lässt.
Na ja, ich glaube er will einfach von einer seiner Kisten hinter der Firewall surfen :)

@Herakles:
Na egal: in dem pf Skript gibt es eine Testregel
Code:
pass quick all             # Alles durchlassen
Diese ist per default auskommentiert. Was passiert denn, wenn du die einkommentierst und die Regeln neu lädst?

Ach ja noch was: wenn Du Kisten hinter der Firewall (also im Internet) pingen kannst, funktioniert Routing und NAT schon mal. D.h. es ist ziemlich sicher eine fehlerhaft konfigurierte pf Regel. Und wie CW schon sagt: Logs könnten deutlich weiter helfen :)
 
Hi Jungs!

Danke für die Antworten. Und es ist richtig, ich will nur das, was current gesagt hat, eben von einer der Kisten hinter der Firewall surfen.

Nen Log hier reinzufügen könnte sich als schwer erweisen, denn was für ne logdatei sollte Windows erstellen, wenn es einfach nur aufs Internet zugreifen will, das aber mit nem Browser nicht kann... (???)

Ich werde es gleich morgen mal austesten, die von Dir erwähnte Zeile umzuändern, current.

Bis dahin gute Nacht

Dennis
 
Da fällt mir doch was ein, wo ich grade so im Bett liege. Ich poste einfach mal die pf.conf, wie ich sie auf dem OpenBSD-Rechner habe. Vielleicht bringt Euch das ja was...

### VARIABLEN ###

Ext = "tun0" # Device an dem das Internet angeschlossen ist
Int = "ne3" # Device an dem das interne Netz haengt
IntNet = "192.168.0.0/24" # Adressraum des internen Netzes
RouterIP = "192.168.0.1" # IP Adresse des Routers
Loop = "lo0" # Loopback Device

# Adressen die auf dem externen Device nicht geroutet werden
# (Adressbereich des internen Netzes muss man wegen der Weiterleitungen zulassen)
NoRoute = "{ 127.0.0.1/8, 172.16.0.0/12, 10.0.0.0/8, 255.255.255.255/32 }"

# Ports die geoeffnet werden sollen
InServicesTCP = "{ ssh, ftp, auth, http }"


### OPTIONS ###

# Macht Statistiken fuer die DSL-Verbindung (pfctl -s info)
set loginterface $Ext

# Beendet inaktive Verbindungen schneller - geringerer Speicherverbrauch.
set optimization aggressive

# Fragmentierte Pakete saeubern
scrub on $Ext all fragment reassemble random-id


### NAT & FORWARD ###

# NAT aktivieren (unter Linux als Masquerading bekannt)
nat on $Ext from $IntNet to any -> $Ext static-port

# Active FTP - Umleitung zu unserem ftp-proxy
rdr on $Int proto tcp from !$RouterIP to !$IntNet port 21 -> 127.0.0.1 port 8081

rdr-anchor redirect


### FILTER ###

# Zum Debuggen....
#pass quick all # Alles durchlassen

# Generelle Block Regel
block on $Ext

# Freiwillig machen wir keinen mucks ;)
block return log on $Ext

# Wir wollen kein IPv6.0
block quick inet6

# Loopback Device darf alles
pass quick on $Loop

# Erschwert scannen mit nmap und co.
block in log quick on $Ext inet proto tcp from any to any flags FUP/FUP
block in log quick on $Ext inet proto tcp from any to any flags SF/SFRA
block in log quick on $Ext inet proto tcp from any to any flags /SFRA

# IP Spoofing verhindern
block in log quick on $Ext inet from $NoRoute to any
block in log quick on $Ext inet from any to $NoRoute

# Active FTP erlauben
pass in quick on $Ext inet proto tcp from any to any port > 49151 user proxy flags S/SAFR keep state

# Ping akzeptieren (ablehnen ist uebrigends wenig sinnvoll)
pass in quick on $Ext inet proto icmp all icmp-type 8 code 0 keep state

# Ports nach aussen oeffnen
pass in quick on $Ext inet proto tcp from any to any port $InServicesTCP flags S/SAFR keep state label ServicesTCP

anchor passin

# Raus darf (fast) alles
pass out quick on $Ext keep state

Ja, das also die ip.conf, wie sie auf dem Rechner im Keller ist.

Bedankt und gute Nacht
 
Original geschrieben von Herakles

Nen Log hier reinzufügen könnte sich als schwer erweisen, denn was für ne logdatei sollte Windows erstellen, wenn es einfach nur aufs Internet zugreifen will, das aber mit nem Browser nicht kann... (???)


Dann sage auch bitte, dass es sich um Windows-Kisten handelt.

damit haben wir schon die Sache etwas eingegrenzt.

CW
 
Original geschrieben von Herakles
Da fällt mir doch was ein, wo ich grade so im Bett liege. Ich poste einfach mal die pf.conf, wie ich sie auf dem OpenBSD-Rechner habe. Vielleicht bringt Euch das ja was...



Ja, das also die ip.conf, wie sie auf dem Rechner im Keller ist.

Bedankt und gute Nacht

Du hast dir selber nur das protokoll TCP freigelassen, was viel zu wenig ist. Du sollst immer bei ausgehendem Trafic mehr können als beim eingehenden. Und es ist ja klar, dass du pingen kannst, weil du dir ja icmp erlaubt hast. Und natürlich kannst du keine Websites sehen, weil du kein UDP gestattest und DNS braucht UDP. Jede Website, FTP-Site usw. muss erst einmal über eine DNS-Abfrage aufgelöst werden. Und daher muss bei dir udp als Protokoll und mindestens Port 53 frei sein.


Nur als Hinweis: wenn du pingen kannst, heißt es noch lange nicht, dass DNS funktioniert, so wie du es oben in deinem ersten Post angegeben hast.

PING geht über ICPM und ist für die Kontrolle gedacht.

DNS geht über UDP Port 53 (auch über TCP) und hat, wie du siehst nichts mit ICMP zu tun.

Übrigens: probiere immer zuerst die Möglichkeit: pass quick all aus, bevor du postest.

Diese pf.conf war für eine einzelne Maschine gedacht und nicht für einen Router/Firewall.

Bei einer Maschine ist diese pf.conf sinnvoll, doch ein Router "sieht" die Pakete anders. Da ist dein ausgehendes Paket bei ihm wiederum ein eingehendes und somit muss deine pass in quick-Regel auch die Protokolle udp, icmp beinhalten. Natürlich schränkst du dies nur für deine interne Domäne ein.

Und daher gilt auch für dich: FAQs lesen!

Gruß


CW
 
Zuletzt bearbeitet:
Moin!

Mir ist da noch was aufgefallen: Beim Hochfahren des BSD-Routers erscheint folgende Fehlermeldung:

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


Ne Idee was das heißt?
 
Original geschrieben von Herakles
Moin!

Mir ist da noch was aufgefallen: Beim Hochfahren des BSD-Routers erscheint folgende Fehlermeldung:

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


Ne Idee was das heißt?

Bevor du jetzt das Thema in die andere Richtung bringst, empfehle ich dir, dich mit DNS selbst zu beschäftigen.

Man kann doch nicht eine Software/Technologie benutzen, ohne zu wissen, wie sie funktioniert.

So geht es doch nicht!

Und um deine Frage zu beantworten: die Adresse, die von einem Rechner beansprucht wird, lässt sich nicht auf diesen übertragen, weil sie von einem anderen gehalten wird.

Ein klarer DNS-Konflikt.

Und bitte frage mich jetzt nicht, wie DNS funktioniert.

Dafür gibt es gute FAQs: http://www.linuxhaven.de/dlhp/HOWTO/DE-DNS-HOWTO.html

CW
 
Also gut, jetzt aber ne Frage, die wohl wirklich in keinem FAQ zu feinden sein dürfte...

Ich hab mit folgendem Newbie guide ein bißchen versucht, die pf.conf nach meinen Wünschen zu editieren.

http://www.thedeepsky.com/howto/newbie_pf_guide.php

Verstehe auch grundsätzlich, was in dem File rübergebracht werden soll, nur gibt es da eine Stelle, an der ich hake...


# Your Internet IP goes in the EXT_IP variable EXT_IP="11.22.33.44"

Meinem Verständnis nach wird hier gesagt, welche IP der Rechner im Internet hat. Da ich T-online Kunde bin, wird diese IP ja dynamisch vergeben, wie sicher bei millionen anderen Nutzern auf diesem Planten auch. Wie kann ich da die EXT_IP fest vergeben? Da hab ich ein Verständnisloch. Eine Idee kommt mir zwar grade noch, aber die kann ich heute nicht mehr austesten, weil ich sehr müde bin, aber: könnte die richtig sein?

up media 10baseT

Könnte das evtl. richtig sein? Muß das für die EXT_IP eingetragen werden, also so:

EXT_NIC="up media 10baseT"

Hmm... wäre nett, wenn ich en Antwort erhielte. DANKE!

Dennis
 
Original geschrieben von Herakles
Also gut, jetzt aber ne Frage, die wohl wirklich in keinem FAQ zu feinden sein dürfte...

I Wie kann ich da die EXT_IP fest vergeben? Da hab ich ein Verständnisloch. Eine Idee kommt mir zwar grade noch, aber die kann ich heute nicht mehr austesten, weil ich sehr müde bin, aber: könnte die richtig sein?

Ich habe dir schon mal gesagt, dass du die FAQs lesen solltest. Und wenn du dies getan hättest, dann hättest du auch gewusst, dass es unter PF auch eine Möglichkeit gibt, mit dynamischen IPs umzugehen. Der Beispiel oben (von dir genannter) ist NUR eine der Möglichkeiten, ein Interface zu deklarieren. Man kann diese entweder über IPs oder aber Geräte selbst (z.B. xl0, fxp0 usw.) festlegen. Und wenn eines dieser Geräte seine IP laufend ändert, dann macht man es so:

ext_if="xl0" --> hier als Beispiel für eine 3Com-Karte ... dieses solltest du mit deiner Karte ersetzen.

Und weiter unten im Code, wenn ich das Gerät beanspruche, setze ich die Gerätevariable $ext_if in die runden Klammern, wenn ich von ihm rede.

Also: ($ext_if)

Und damit meine ich nichts anderes als das oben genannte Interface xl0 mit der zur Zeit aktuellen IP-Adresse (die sich ruhig ändern kann).

ALSO: F.A.Q.s LESEN!

Und beim nächsten Mal einen neuen Thread aufmachen.

So geht das hier nicht! :mad:

CW

P.S. Und solche Einträge, wie von dir vorgeschlagen ( up media 10baseT usw.) sind absolut falsch, was wiederum bezeugt, dass du die FAQ nicht gelesen hast ... diese FAQ ist zugleich auch voll von Beispielen, wie man es richtig macht.
 
Zuletzt bearbeitet:
@Herakles

Hi,

ich habe schon mehrere Router exakt nach dem HowTo von J. Graf installiert und es hat immer alles geklappt.
Wenn etwas nicht geklappt hat, war es meist meine Schuld, weil ich die Konfig-Dateien nicht VOLLKOMMEN EXAKT erstellt bzw. editiert habe wie dort beschrieben.

Als Anfänger kann ich dir nur raten, die beschriebene Konfiguration einfach nochmal zu checken bzw. zu wiederholen. Das elendig lange Herumstochern in div. HowTo's und FAQ's wird dir im Moment nicht unbedingt weiterhelfen. Bring erstmal den Router zum laufen ;)

Du hast geschrieben, das du vom Client pingen kannst.
Wenn also so etwas wie.

Code:
ping [url]www.web.de[/url]

vom Client aus funktioniert, dann hast du keine Probleme mit der DNS-Auflösung.

Wenn das Browser vom Client aus nicht funktioniert, solltest du die Netzwerkeinrichtung des Clients (IP-Adresse, DNS, Gateway) checken (DNS und Gateway ist immer die interne Adresse des Routers)

Gruß
RW
 
Original geschrieben von ReinerWein
Das elendig lange Herumstochern in div. HowTo's und FAQ's wird dir im Moment nicht unbedingt weiterhelfen. Bring erstmal den Router zum laufen ;)


Hmmm ... also die PF-FAQ von OpenBSD bzw. die DNS-HOWTO ist weder elendig lang, noch ist sie irgendwie unverständlich.

Eine fundierte Wissensbasis ist unerlässlich (vor allem, wenn schon zu Anfang solche Probleme entstehen). Und daher sollte man solche Empfehlungen zum Nicht-Lesen einem Newbie lieber nicht auftischen.

Ich habe sehr viel mit OpenBSD und ähnlichen Aufgaben zu tun und kann immer noch nicht ohne FAQs/Handbooks & Manpages "leben", denn sie sind einfach "ein wichtiger Teil des ganzen Prozesses".

Von der Grundidee, wie man etwas realisieren will, bis zum endgültigen Systemaufbau, begleiten sie mich, weil ich mir damit viel Herumprobiererei erspare.

Haltet euch bitte zurück mit solchen Empfehlungen, wie dem Nicht-lesen-Sollen.

Und das Wissen darüber, wie ein Router (oder was anderes) aufgebaut werden soll, holt man sich ja zuerst bei den FAQs/Handbooks/Erfahrungsberichten.

So bin ich zumindest vorgegangen. ;)

Das elendig lange Herumsuchen in einer FAQ ist im Vergleich zum wirklich elendig langen Herumprobieren (ohne eine solide Wissensbasis) an der Maschine selbst wesentlich länger.

Daher nochmal meine Empfehlung (um diesen Thread nicht unnötig in die Länge zu ziehen, da ja schon andere Fragen ankommen: (siehe Unwissen darüber, wie man mit dynamischen IPs umgehen soll):

a) die wirklich gute PF-FAQ von OpenBSD (die Jungs müssen es ja wissen, wie es geht)

b) die DNS-Howto

c) google

Gruß

CW
 
Zuletzt bearbeitet:
Hi!

CW, Du hast in jedem Fall recht, ein fundiertes Grundwissen sollte sicherlich vorhanden sein. Außerdem will ich auch sowieso genau wissen worum es geht, allein schon aus Wissensgier. Ich möchte nur im Moment so schrecklich gern meinen Coyote-Router (www.coyotelinux.com) durch nen OpenBSD-Router mit integriertem Server ersetzen. Da dachte ich halt an eine schnelle Lösung, die mir aber wohl leider verwehrt ist.

Ich werde mich also dann jetzt mal ans Lesen diverser Schriftstücke ausm Web machen und dann versuchen, den Router ans laufen zu bekommen. ICh frage mich jedoch wirklich ernsthaft, ob es wohl ein DNS und/oder Firewall, alsp pf-Problem ist.

Ich seh das schon kommen: ein Wochenende eingelesen in pf und der Fehler liegt nachher GANZ woanders. Das Glück hab ich immer...

Okay, bis dahin noch nen schönen Tag an alle und besten Dank für Euern Einsatz für mich!

Dennis
 
@CW
Haltet euch bitte zurück mit solchen Empfehlungen, wie dem Nicht-lesen-Sollen.

1. Ich lasse es mir von Dir nicht verbieten, meine Meinung, Empfehlung oder Tipps hier zu posten.
2. Warum ist Deine Empfehlung (FAQ's zu lesen) unbedingt die bessere ? Ich bitte um ein bisschen weniger Arroganz.

Ich möchte meine Aussage
Das elendig lange Herumstochern in div. HowTo's und FAQ's wird dir im Moment nicht unbedingt weiterhelfen. Bring erstmal den Router zum laufen
nochmals erläutern.

Es ging mir hier einfach nur darum, ein erstes Erfolgserlebnis zu haben und möglichst schnell ein funktionierendes System. Dies ist -gerade für Einsteiger- sehr wichtig.
Dies erreicht man am einfachsten dadurch, dass man sich erst einmal sklavisch an das HowTo hält und die dort beschrieben, einfachen Schritte nacheinander ausführt.
Wenn man das HowTo durchgearbeitet hat und - ganz wichtig - einen kurzen Überblick hat, wie die einzelnen Komponenten korrekt zusammenarbeiten, SOLLTE man sich weiterbilden, indem man an der Konfiguration "rumspielt", weitergehende Literatur liest und sich so immer tiefer in das Thema reinfuchst.

Diese Vorgehensweise garantiert eine von Beginn an ansteigende Lernkurve ohne Demotivation.

Habe ich allerdings von Anfang an ein nicht funktionierendes System, muss mich erst durch kryptisch anmutende FAQ's (für einen Newcomer ist beinahe jede FAQ 'kryptisch') wühlen und schaffe es trotz zig-facher Konfigurationseinstellungen nicht, ein System zum Laufen zu bringen, ist die Lernkurve für lange Zeit flach und die Demotivation extrem hoch.

Auf die lange Sicht wird sich der erlangte Wissenstand bei beiden Methoden angleichen, aber der erstere Weg ist der einfacherere und pädagogisch sinnvollerere.

Gruß
RW
 
Original geschrieben von ReinerWein
@CW


1. Ich lasse es mir von Dir nicht verbieten, meine Meinung, Empfehlung oder Tipps hier zu posten.
2. Warum ist Deine Empfehlung (FAQ's zu lesen) unbedingt die bessere ? Ich bitte um ein bisschen weniger Arroganz.

Ach, erstens: war es nur eine Bitte

zweitens: habe ich mit Herakles im ICQ die Sachen besprochen. Zur Zeit guckt er Fußball ;)

drittens: höre bitte auf mich als einen arroganten Menschen hinzustellen. Ich mag es nicht, wenn man persönlich wird, ok?

Wenn du meiner Bitte kein Gehör schenken willst, dann mache es so wie du es willst.

Sowas kann man ja auch ablehnen, ohne persönlich zu werden, oder?

Ich möchte meine Aussage

nochmals erläutern.

Es ging mir hier einfach nur darum, ein erstes Erfolgserlebnis zu haben und möglichst schnell ein funktionierendes System. Dies ist -gerade für Einsteiger- sehr wichtig.

Das habe ich bereits mit Herakles per ICQ und PM auch gemacht.

Trotzdem ist dein Verhalten löblich, so muss es ja auch im Forum sein ;)

Dies erreicht man am einfachsten dadurch, dass man sich erst einmal sklavisch an das HowTo hält und die dort beschrieben, einfachen Schritte nacheinander ausführt.

Sklavisch sich halten ist ein zu hartes Wort. Ein HOWTO (und alles andere was so ähnlich ist), ist vielmehr ein Begleiter, würde ich sagen.

Aber, lassen wird das lieber, ist nicht der Topic.

Wenn man das HowTo durchgearbeitet hat und - ganz wichtig - einen kurzen Überblick hat, wie die einzelnen Komponenten korrekt zusammenarbeiten, SOLLTE man sich weiterbilden, indem man an der Konfiguration "rumspielt", weitergehende Literatur liest und sich so immer tiefer in das Thema reinfuchst.

Leider hast du es halt ja nicht mitbekommen, als ich mit Herakles sprach. Ich würde dir gerne seine PM an mich weiterleiten, aber zuerst muss ich ihn fragen, ob er dies gutheißt (ist ja schließlich eine Personal Message).

Diese Vorgehensweise garantiert eine von Beginn an ansteigende Lernkurve ohne Demotivation.

Das ist bei jedem Menschen unterschiedlich und es gibt kein Patentrezept. Daher habe ich es vorgezogen (um etwaige Mißverständnisse, wie diesen hier zu vermeiden) direkt mit Herakles zu reden. Immerhin haben wir es mit Menschen zu tun und direkte Kommunikation ist mir bei solchen relativ komplexen Sachen lieber.

Wenn man schon helfen will (und Erfolgserlebnisse haben möchte), sollte man auch alles getan haben. :)

Habe ich allerdings von Anfang an ein nicht funktionierendes System, muss mich erst durch kryptisch anmutende FAQ's (für einen Newcomer ist beinahe jede FAQ 'kryptisch') wühlen und schaffe es trotz zig-facher Konfigurationseinstellungen nicht, ein System zum Laufen zu bringen, ist die Lernkurve für lange Zeit flach und die Demotivation extrem hoch.

Deine Meinung, die ich respektiere. Jedoch sehe ich (und Herakles wohl auch, seinen PMs und ICQ zufolge) diese Sache etwas anders.

Aber: viele Wege führen nach Rom, nicht wahr?

Auf die lange Sicht wird sich der erlangte Wissenstand bei beiden Methoden angleichen, aber der erstere Weg ist der einfacherere und pädagogisch sinnvollerere.

Gruß
RW

Ach, "pädagogisch" ... darüber redete ich auch mit Herakles.

Na ja, dann hat sich das doch erledigt, oder?

Gruß

CW
 
Zuletzt bearbeitet:
Hi!

Ach Jungs, ich finde, daß ReinerWein sehr viel richtiges geschrieben hat in seinen Postings. Auch CW hat mir sehr viel weitergeholfen. Ich möchte nur nicht, daß Ihr Euch irgendwie in die Haare bekommt, das ist es nun wirklich nicht wert.

Ich habe sowohl ReinerWeins als auch CWs Informationen gewissenhaft gelesen und werde mir einen Mittelweg aus beiden suchen. Die PM kann CW von mir aus weiterleiten (weiß gar nicht mehr, was genau drinne stand) und ansonsten sollten wir uns darauf beschränken, hier Infos auszutauschen und nicht gegenseitig Verhaltensmaßregelungen anzubringen. Ich bin weder auf der Seite von CW noch auf der von ReinerWein, ich bin der Newbie hier und freu mich über Infos von beiden.

So, Schluß jetzt und weiter gemacht mit meinem neuen BSDRouter im Keller, der nun endlich den schön funktionierenden (immerhin schon über 3 Jahre) Coyotelinux-Router ablösen soll.

In diesem Sinne Junx!!!!!

Dennis
 
Original geschrieben von Herakles
Hi!

Die PM kann CW von mir aus weiterleiten (weiß gar nicht mehr, was genau drinne stand) und ansonsten sollten wir uns darauf beschränken, hier Infos auszutauschen und nicht gegenseitig Verhaltensmaßregelungen anzubringen.

Sorry, aber ich habe sie wohl gestern unwissentlich gelöscht ... *dämlich* ... na ja, so wichtig ist es auch nicht ;)

Ist eh jetzt gegessen :)

Grüße und viel Erfolg mit deinem Router

CW
 
Och Leute...

Also, habe jetzt den ganzen Router komplett neu formatiert und allet noch mal neu gemacht und zwar wieder nach dem Howto:

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

So, nu läuft soweit alles wieder wie vorher auch, ich kann von allen Clients aus jede Seite im Netz anpingen und bekomme auch eine Auflösung des Namens in eine IP. ABER:

Ich habe die im Howto genannte pf.conf von der Seite gezogen und auf den Router gespielt. Lediglich die zu ändernden Sachen (Meine Interfacennamen, etc.) sind anders, ich paste mal eben:

Code:
### VARIABLEN ###
    Ext = "tun0"            # Device an dem das Internet angeschlossen ist 
    Int = "<internes_device>"      # Device an dem das interne Netz haengt
    IntNet = "192.168.1.0/24"      # Adressraum des internen Netzes
    RouterIP = "192.168.1.1"       # IP Adresse des Routers
    Loop = "lo0"                   # Loopback Device
    # Adressen die auf dem externen Device nicht geroutet werden
    # (Adressbereich des internen Netzes muss man wegen der Weiterleitungen zulassen)
    NoRoute = "{ 127.0.0.1/8, 172.16.0.0/12, 10.0.0.0/8, 255.255.255.255/32 }"
    # Ports die geoeffnet werden sollen
    InServicesTCP = "{ ssh, ftp, auth }"
    ### OPTIONS ###
    # Macht Statistiken fuer die DSL-Verbindung (pfctl -s info)
    set loginterface $Ext
    # Beendet inaktive Verbindungen schneller - geringerer Speicherverbrauch.
    set optimization aggressive
    # Fragmentierte Pakete saeubern
    scrub on $Ext all fragment reassemble random-id
    ### NAT & FORWARD ###
    # NAT aktivieren (unter Linux als Masquerading bekannt)
    nat on $Ext from $IntNet to any -> $Ext static-port
    # Active FTP - Umleitung zu unserem ftp-proxy
    rdr on $Int proto tcp from !$RouterIP to !$IntNet port 21 -> 127.0.0.1 port 8081
    rdr-anchor redirect
    ### FILTER ###
    # Zum Debuggen....
    #pass quick all             # Alles durchlassen
    # Generelle Block Regel
    block on $Ext
    # Freiwillig machen wir keinen mucks ;)
    block return log on $Ext
    # Wir wollen kein IPv6.0
    block quick inet6
    # Loopback Device darf alles
    pass quick on $Loop
    # Erschwert scannen mit nmap und co.
    block in log quick on $Ext inet proto tcp from any to any flags FUP/FUP
    block in log quick on $Ext inet proto tcp from any to any flags SF/SFRA
    block in log quick on $Ext inet proto tcp from any to any flags /SFRA
    # IP Spoofing verhindern
    block in log quick on $Ext inet from $NoRoute to any
    block in log quick on $Ext inet from any to $NoRoute
    # Active FTP erlauben
    pass in quick on $Ext inet proto tcp from any to any port > 49151 user proxy flags S/SAFR keep state
    # Ping akzeptieren (ablehnen ist uebrigends wenig sinnvoll)
    pass in quick on $Ext inet proto icmp all icmp-type 8 code 0 keep state
    # Ports nach aussen oeffnen
    pass in quick on $Ext inet proto tcp from any to any port $InServicesTCP flags S/SAFR keep state label ServicesTCP
 
    anchor passin
    # Raus darf (fast) alles
    pass out quick on $Ext keep state

Soweit, so gut.

Jetzt bekomm ich aber folgende Fehlermeldung:

Code:
/etc/pf.conf:32: no translation address with matching address family found.
pfctl: Syntax error in file: pf rules not loaded

Meine Netzwerkkonfiguration:


Client IP: 192.168.0.10
Subnet: 255.255.255.0
Gateway: 192.168.0.1
DNS: 192.168.0.1

Ach mensch, was mach ich bloß falsch? Helft mir doch! Ich ertrinke in Demotivation...

Ach ja, nochwas komisches. Ich habe einfach einmal versucht, in eine pf.conf nur folgendes zu schreiben:

Code:
pass quick all

Da meldet der werte Herr Rechner mir auch einen "syntax error:1", also in der einzigen im pf.conf vorhandenen Zeile. Hab versuchsweise einfach mal folgendes gemacht:

Code:
 pass quick all

Na, wo ist der Unterschied? Jahaaaa, ein Leerzeichen steht in der zweiten Version vorne. Oh man, wieso ist sowas so wichtig und wieso steht das nicht in dem Howto?

Okay, nach der zweiten Version sollte dann nach meinem Verständnis also alles durchgelassen werden, was so passiert. Also die unsicherste Version, die et so aufm Markt gibt. Aber auf meinem Client ist außer ping nach wie vor nix möglich...

Okay, okay, morgen ist wieder die pf-FAQ dran. Bis dahin gute Nacht!


Herakles
 
Oh stop, bevor jemand sagt, daß der Kopf falsch ausgefüllt ist, schreib ich den mal eben neu hier rein:

Code:
### VARIABLEN ###
    Ext = "rl0"            # Device an dem das Internet angeschlossen ist 
    Int = "ne3"      # Device an dem das interne Netz haengt
    IntNet = "192.168.0.0/24"      # Adressraum des internen Netzes
    RouterIP = "192.168.0.1"       # IP Adresse des Routers
    Loop = "lo0"                   # Loopback Device

So, das wars jetzt aber, so sieht also die pf.conf aus.
 
Original geschrieben von Herakles

Jetzt bekomm ich aber folgende Fehlermeldung:

Code:
/etc/pf.conf:32: no translation address with matching address family found.
pfctl: Syntax error in file: pf rules not loaded


Also, siehe dir bitte diese Erklärung aus der OpenBSD-PF-FAQ zu NAT:



The general format for NAT rules in /etc/pf.conf looks something like this:

nat on extif [af] from src_addr [port src_port] to \
dst_addr [port dst_port] -> ext_addr



Das wirklich relevante habe ich fett markiert.

Siehtst du den Unterschied?

Man NAT-et zu einer neuen IP-Adresse und nicht zu einem Interface. Und da du in deinen Makrodefinitionen tun als dein externes Interface definiert hast, ist es ja klar, dass du dann dieses in die runden klammern packen musst, wenn du NAT über ihn machen möchtest.

Ich habe schon mal über die runden klammern geschrieben, nicht wahr?

Daher, kannst du deine Zeile behalten, nur noch Ext muss du so schreiben ($Ext) und das wars. Die NAT würde sofort funktionieren. Und außerdem hat dies auch einen angenehmen Nebeneffekt und zwar, wenn sich deine IP dynamisch ändern sollte (oder du es selber machst) wird PF automatisch NAT darauf anpassen.

Und wie du siehst, die Antwort lag in der FAQ ;)

Ach mensch, was mach ich bloß falsch? Helft mir doch! Ich ertrinke in Demotivation...

Du liest einfach nicht ;)

Sorry, aber das ist so.

Auf dieser Seite kannst du dich überzeugen, dass es ein gutes Beispiel mit runden Klammern gab: http://www.openbsd.org/faq/pf/nat.html

Ach ja, nochwas komisches. Ich habe einfach einmal versucht, in eine pf.conf nur folgendes zu schreiben:

Code:
pass quick all

Da meldet der werte Herr Rechner mir auch einen "syntax error:1", also in der einzigen im pf.conf vorhandenen Zeile. Hab versuchsweise einfach mal folgendes gemacht:

Code:
 pass quick all

Na, wo ist der Unterschied? Jahaaaa, ein Leerzeichen steht in der zweiten Version vorne. Oh man, wieso ist sowas so wichtig und wieso steht das nicht in dem Howto?

Wenn du die Vorgehensweise des Paketfilters verstehen würdest (die in den Manpages/FAQs) beschrieben ist, dann würdest du diese Fehler erst gar nicht machen.

Es wird Zeile für Zeile geparst!

Und jeder weiß doch, dass auch ein Leerzeichen für den Computer ein Zeichen bedeutet.

Außerdem hat der Paketfilter auch eine strenge Abfolge von Befehlen/Optionen, die man auf alle Fälle einhalten muss, es sei denn man deaktiviert sie mit pfctl, was ich dir aber niemals empfehlen würde.


Gruß

CW
 
Boar, Jungs also ich will echt nicht nerven, WIRKLICH nicht! Aber ich komm hier nicht klar.

Also, ich hab jetzt mal ernsthaft angefangen, die pf-FAQ zu lesen. So und da ist zu lesen:

Suppose it is decided that web-browsing should be possible from our corporate
network, which requires passing both TCP connections to port 80 as
well as allowing DNS requests on port 53.


block in all
pass in proto udp from 192.168.0.0/24 to any port = 53 keep state
pass in proto tcp from 192.168.0.0/24 to any port = 80 keep state


The third rule enables hosts on the corporate network to make connections
to the HTTP port on external hosts, instructing PF to create an entry in its
state table for these connections.

(die IPs hab ich angepasst)

Und jetzt mal ohne scheiss. Ich hab einfach nur so eine ich sag mal MINI-pf.conf gemacht, wo eben nur das da oben drinne steht. LAut meinem Verständnis der FAQ bis zu diesem Punkt arbeitet pf nun Zeile für Zeile ab und guckt nach, ob noch irgendwann irgendwas widerlegt wird, wenn nicht, führt es aus, was da steht. Alles plausibel für mich, ABER

immer wenn ich folgendes eingebe:

# /sbin/pfctl -e -F all -f /etc/pf.conf

(hab ich hierher: http://www.fmi.uni-passau.de/~grafj/openbsd/3.3/ )

kommt das:

rules cleared
nat cleard
altq cleared
states cleared
pf: statistics cleared
0 tables deleted
/etc/pf.conf:3:syntax error
pfctl:syntax error in file: pf rules not loaded

Und das passiert IMMER, egal, ob ich da wie schon in nem posting weiter oben eine oder zwei oder 5 oder 1000 Leerzeichen vor die Zeilen mache oder nicht und auch egal, ob ich Zeile 3 lösche oder nicht, dann ist der Fehler halt in Zeile 2 und so fort.

Ernsthaft, und ich hab im FAQ gelesen(!!!):

ICH SEHE DEN FEHLER NICHT! An diesem Mist bleibe ich jetzt schon seit 3 oder 4 Tagen höngen und komme nich weiter.

Was zusätzlich noch tierisch nervt ist, daß ich während ich an dem BSD-Router rumschraube, nicht im Internet irgendwelche anderen Dinge nachsehen kann. Zum Beispiel hätte ich an dieser Stelle mal gern in das HOWTO von CW geguckt, aber ging ja nich, gut hätte ich vorher aufmachen können... Naja nu egal, ich muss jedenfalls ständig unten im Keller die Karten umstecken, mir gehts aufn Sack. Ach da könnt Ihr ja nix dafür... Sorry. Ach ich schnall einfach nich, wo der Fehler ist! Seid lieb zu mir, ich ralls doch einfach nru nich und die FAQs helfen mir momentan einfach nicht...

Ich höre jetzt laut Musik, damit ich wieder runterkomme und mich abrege, uaaaahhhh. Ach Mensch, nehmt es mit Humor, aber ich komm echt nich weiter, Loitz!

Danke, Euer Nixraffer


Dennis
 
Original geschrieben von Herakles
Boar, Jungs also ich will echt nicht nerven, WIRKLICH nicht! Aber ich komm hier nicht klar.

Ich höre jetzt laut Musik, damit ich wieder runterkomme und mich abrege, uaaaahhhh. Ach Mensch, nehmt es mit Humor, aber ich komm echt nich weiter, Loitz!

Danke, Euer Nixraffer


Dennis

Es gibt keine GLEICHHEITSZEICHEN vor der Portnummer!

Das ist dein Fehler.

Man schreibt einfach port 80.

Die FAQ lesen! Und zwar die PF-FAQ von OpenBSD!

Hier ein Beispiel aus dieser (für Protokoll ssh):


pass in on fxp0 proto tcp from any to any port ssh flags S/SA


Kann es sein, dass du eine FAQ zum älteren ipf gelesen hast.

Beim ipf gab es noch das Gleichheitszeichen.

Ist zwar nur eine Vermutung, aber dennoch frage ich dich, bevor du mit anderen Problemen konfrontiert wirst.

CW
 
Zuletzt bearbeitet:
2.2 More advanced rulesets
Suppose it is decided that another website will be run on the corporate webserver, this one containing sensitive corporate information, so it shouldn't be accessible from the outside. This website will, contrary to the other one, run on the non-standard TCP port 8000.

So now you'll not only have to filter on destination address, but on the TCP port number as well, to make sure nobody can connect to port 8000 from the outside and access the sensitive data:


block in all
pass in proto tcp from any to 260.250.1.3/32 port = 80
pass in proto tcp from 260.250.1.3/32 port = 80 to any

As you can see, we're not only filtering on the port number, we're also telling PF to only allow packets of protocol TCP to pass through to the firewall to the corporate webserver. This is necessary, since the IP protocol itself doesn't know about port numbers. Only TCP and UDP can differentiate between different ports.



So, und das hab ich hierher: http://www.inebriated.demon.nl/pf-howto/html/node3.html

da steht " = ".... kann das denn sein? oh mann....

bis denn, jetz gehts inne vorlesung


Dennis
 
Zurück
Oben