ipfw und natd - wieder mal

J

juedan

Guest
Hallo an alle Leser hier im Forum.

Nach langem How-To -Studium, man-pages und Handbuch lesen bin ich am verzweifeln.

Ich wollte folgendes testen:
FreeBSD-Notebook (192.168.1.3) hängt an FreeBSD-Server (192.168.1.1). Auf dem Server läuft IPFW und NATD mit den rules, die im How-To vorgestellt wurden - natürlich wurden die angegeben Adressen und Interfaces angepaßt.
Meine /etc/natd/natd.conf sieht so aus:

redirect_port tcp 192.168.1.3:20 20
redirect_port udp 192.168.1.3:20 20
redirect_port tcp 192.168.1.3:21 21
redirect_port udp 192.168.1.3:21 21

Um das Ganze zu testen, starte ich erstmal natd von der Kommandozeile:
# natd -dynamic -f /etc/natd/natd.conf -n tun0 -l -log_denied -log_ipfw_denied -v

Da tut sich auch recht ordentlich was.
So, wenn ich nun von meinem Notebook aus (kein IPFW im Kernel, Netzwerkkarte hat Adresse 192.168.1.3)
# ftp ftp.leo.org
eingebe, passiert garnichts.
Die Ausgabe von natd zeigt in keinster Weise die Adresse des Notebooks an.
Die Dienste meines Servers sind aber vom Notebook aus erreichbar (ProFTP, Postfix, apache, SQuid usw).

Das Endziel soll sein, dass ich von einem Windows-Client aus mittels StarMoney und HBCI auf den Bank-Server zugreifen kann. Dazu benötigt die Software Port 3000. Dieser soll nun zum Windows-Rechner "durchgeschleift" werden.
Um alles zu erlernen, habe ich nun versucht die Sache mit ftp und den ftp-ports (20,21) "nachzubilden" - ohne Erfolg.

Wer kann mir helfen.

Schon mal vielen Dank.

Jürgen
 
auf deutsch routest du FTP auf dein notebook und kommst von deinem notebook aus auf keinen FTP server?
 
hi,

nur mal, so. ich hab auch einen windows rechner mit starmoney und hbci. von port 3000 offen keine spur....
hier klappts prima auch ohne.
 
Hallo marzl

hi,
nur mal, so. ich hab auch einen windows rechner mit starmoney und hbci. von port 3000 offen keine spur....
hier klappts prima auch ohne.

Iiiiiinteeeeeressaaaaaant. Was ich mittels google gefunden habe, war immer nur "port 3000 in firewall öffnen, nat aktivieren" usw.

Wie hast Du StarMoney bzw. Dein FreeBSD konfiguriert?

Vielen Dank für die Antwort.

Grüße

Jürgen.

PS: Wissen möchte ich schon, warum das mit dem ftp nicht fluppt.:D
 
Ja öha. Da bin ich jetzt aber verblüfft.
grunix schreibt in seine rules:
ipfw add 10 divert natd all from any to any via tun0

Du schreibst
${fwcmd} add 50 divert natd all from any to any via dc3

Wieso nicht tun0, sondern dc3 (oder andere Netzwerkkarte für DSL-Modem). Jetzt stehe ich auf'm Schlauch - totale Verwirrung.

Aber möglicherweise habe ich die Lösung gefunden:
${fwcmd} add deny log logamount 10000 tcp from any to any 0-65535 in recv tun0
${fwcmd} add deny log logamount 10000 udp from any to any 0-65535 in recv tun0

Ich habe wahrscheinlich den port für natd dichtgemacht:D
Werde morgen mal testen und berichten

Viele Grüße und danke

Jürgen
 
hihoi,

ich glaub du hast das script nich ganz verstanden..
oben im script sind die "werte" einzutragen, die dann dynamisch automitsch dann für das ganze script gelten.
meine netzwerkkarte heisst "dc3" (die ist mit meinem kabelmodem verbunden).
sollte deine verbindung (bei adsl typisch) "tun0" heissen, dann einfach "dc3" durch "tun0" austauschen. :D

natd_interface="tun0" # ${natd_interface} Externes Interface
 
Guten Morgen marzl,

als ich den Rechner ausgeschaltet hatte, isses mir auch eingefallen - bei 35°C in meinem Minibüro dörrt das Hirn schon mal ein:D

Die von mir angegebenen rules werde ich nochmals prüfen.

Vielen Dank erstmal an Dich

Grüße und einen schönen Tag

Jürgen
 
Guten Morgen an alle frühaufstehenden Leser.

So, nun habe ich mal ein bisschen nachgeforscht und experimentiert.
Dabei habe ich festgestellt, dass nur folgende Einträge in
/etc/natd/natd.conf funktionieren:
redirect_port tcp 192.168.1.3:0-60000 0-60000
redirect_port udp 192.168.1.3:0-60000 0-60000

Das kann es ja wohl nicht sein.
Weiterhin bedeutet dies - ich erinnere mich da an meine OS/2-Zeiten - für jeden Client muss ich eine firewall aufsetzen.

Weiß jemand, ob es einen Proxy (wie z.B. SQuid) gibt, der mir den HBCI-Port (=3000) an einen Client weitergibt?

Vielen Dank für die Antworten.

Grüße

Jürgen
 
Zuletzt bearbeitet von einem Moderator:
Das kann es wirklich nicht sein, denn, so wird ja jeder Port der von aussen auf die FW/NATD Box kommt auf die interne IP 192.168.1.3 weitergereicht.
Poste doch bitte auch mal Deine IPFW Rules.

redirect_port tcp 192.168.1.3:21 21
redirect_port udp 192.168.1.3:21 21
[...]
So, wenn ich nun von meinem Notebook aus (kein IPFW im Kernel, Netzwerkkarte hat Adresse 192.168.1.3)
# ftp ftp.leo.org
eingebe, passiert garnichts.
Die Ausgabe von natd zeigt in keinster Weise die Adresse des Notebooks an.

Deine NATD Rules für FTP besagen, das Anfragen auf Port 21 von aussen "21" auf die interne IP "192.168.1.3:21" weitergeleitet werden. Da Du aber Probleme hast von Deinem Notebook über den Router auf den FTP Server zu kommen vermute ich ein Problem in Deinen IPFW Rules.

Desweiteren überprüfe bitte auf welche Ports der Router/FW/NATD hört (netstat -a).

Das Endziel soll sein, dass ich von einem Windows-Client aus mittels StarMoney und HBCI auf den Bank-Server zugreifen kann. Dazu benötigt die Software Port 3000. Dieser soll nun zum Windows-Rechner "durchgeschleift" werden.
Um alles zu erlernen, habe ich nun versucht die Sache mit ftp und den ftp-ports (20,21) "nachzubilden" - ohne Erfolg.

Das hat Du nicht wirklich gemacht, denn wenn Du es gemacht hättest, dann müsste auf Deinem Laptop mit der IP 192.168.1.3 ein FTP Daemon lauschen, denn Deine NATD Rules leiten FTP Anfragen die auf Deine externe IP kommt auf die interne IP des Laptops um.
 
Guten Morgen asg,

danke für die schnelle Antwort.

Wie gewünscht mit ipfw-rules:

#!/bin/sh
#
# zum Testen:
# log logamount 10000: maximal 10000 Zugriffe mitloggen
# log-File: /var/log/security
#
#
fwcmd="/sbin/ipfw"

#
netfxp0="192.168.1.1"
maskfxp0="255.255.255.0"

# IP-Adresse des ntp-Servers
zeitserver="130.149.17.21"

# alle Regeln loeschen
# --------------------
${fwcmd} -q flush
${fwcmd} resetlog

# Einstellungen fuer NAT
# ----------------------
${fwcmd} add divert natd log logamount 10000 all from any to any via tun0

# alle Zugriffe auf lo0 vom Intranet erlauben
# -------------------------------------------
${fwcmd} add allow ip from any to any via lo0

# alles was im Intranet ueber fxp0-Netzwerkkarte laeuft
# -----------------------------------------------------
${fwcmd} add pass all from 192.168.1.0/24 to 192.168.1.0/24 via fxp0

# erlaube alle Verbindungen, die von hier initiiert wurden
# --------------------------------------------------------
${fwcmd} add allow tcp from any to any out xmit tun0 setup

# Wenn Verbindung offen, dann soll sie offen bleiben
# --------------------------------------------------
${fwcmd} add allow tcp from any to any via tun0 established

# FTP-Dienst
# ----------
${fwcmd} add allow log logamount 10000 tcp from any to any 21 setup

# SSH-Dienst
# ----------
${fwcmd} add allow log logamount 10000 tcp from any to any 22 setup

# HTTP-Dienst
# -----------
${fwcmd} add allow log logamount 10000 tcp from any to any 80 setup


# Sendet ein RST an alle ident-Anfragen
# -------------------------------------
${fwcmd} add reset log logamount 10000 tcp from any to any 113 in recv tun0

# DNS-Dienst
# ----------
# Erlaubt ausgehende DNS queries NUR auf den angegebenen Server
# T-Online-DNS
${fwcmd} add allow udp from any to 194.25.2.129 53 out xmit tun0
${fwcmd} add allow tcp from any to 194.25.2.129 53 out xmit tun0
${fwcmd} add allow udp from 194.25.2.129 53 to any in recv tun0
${fwcmd} add allow tcp from 194.25.2.129 53 to any in recv tun0

# NTP-Dienst
# ----------
${fwcmd} add allow udp from any to ${zeitserver} 123 out xmit tun0
${fwcmd} add allow udp from ${zeitserver} 123 to any in recv tun0

# loggt ICMP Anfragen (echo und dest. unreachable) == script kiddies
# ------------------------------------------------------------------
${fwcmd} add allow log logamount 10000 icmp from any to any in recv tun0 icmptype 3
${fwcmd} add allow log logamount 10000 icmp from any to any in recv tun0 icmptype 8

# ICMP erlauben
# -------------
${fwcmd} add allow icmp from any to any

# Blockiert alle Anfragen auf ports unter 65536
# ---------------------------------------------
${fwcmd} add deny tcp from any to any 0-65535 in recv tun0
${fwcmd} add deny udp from any to any 0-65535 in recv tun0

# Alles andere verbieten
# ----------------------
${fwcmd} add deny ip from any to any


und auch die Ausgabe von netstat -a (Notebook):

tcp4 0 0 *.x11 *.* LISTEN
tcp4 0 0 *.3306 *.* LISTEN
tcp4 0 0 *.http *.* LISTEN
tcp4 0 0 *.submission *.* LISTEN
tcp4 0 0 *.smtp *.* LISTEN
tcp4 0 0 *.ssh *.* LISTEN
tcp4 0 0 *.printer *.* LISTEN

Viele Grüße

Jürgen
 
Zuletzt bearbeitet von einem Moderator:
was steht in den logs von IPFW?
Am besten mal probieren mit dem Laptop ne FTP Verbindung herzustellen, und dabei auf ner anderen console "tail -f $Deine_IPFW_Logdatei" laufen lassen
 
Hallo asg,

die log-files zeigen nur die DNS-Anfragen vom Notebook.

ping vom Server zum Notebook und zurück geht. ftp/http/usw. vom Notebook zu meinem Server geht auch und wird in den log-files auch schön angezeigt, solange es sich um eine Intranetverbindung handelt.

Die Ausgabe von ethereal (super Tool!), das auf fxp0 (Server) mitlauscht, zeigt folgendes:
[...] Src Adr: notebook.[...] Dst Adr: ftp.freebsd.org
[...] Source port 1040, Dst port 21

Hier habe die Ausgabe von "netstat -a | grep LISTEN" von meinem Server

tcp4 0 0 localhost.antivir *.* LISTEN
tcp4 0 0 *.4243 *.* LISTEN
tcp4 0 0 *.60000 *.* LISTEN
tcp4 0 0 *.8120 *.* LISTEN
tcp4 0 0 *.x11 *.* LISTEN
tcp4 0 0 *.6127 *.* LISTEN
tcp4 0 0 *.3128 *.* LISTEN
tcp4 0 0 server.netbios-ssn *.* LISTEN
tcp4 0 0 *.ftp *.* LISTEN
tcp4 0 0 localhost.smtp-backdoo *.* LISTEN
tcp4 0 0 server.smtp *.* LISTEN
tcp4 0 0 localhost.smtp *.* LISTEN
tcp4 0 0 *.3306 *.* LISTEN
tcp4 0 0 server.pop3 *.* LISTEN
tcp4 0 0 *.http *.* LISTEN
tcp4 0 0 *.https *.* LISTEN
tcp4 0 0 *.ssh *.* LISTEN
tcp46 0 0 *.ssh *.* LISTEN
tcp4 0 0 *.printer *.* LISTEN
tcp6 0 0 *.printer *.* LISTEN
tcp4 0 0 *.sane *.* LISTEN
tcp4 0 0 *.telnet *.* LISTEN
tcp4 0 0 *.1022 *.* LISTEN
tcp4 0 0 *.nfsd *.* LISTEN
tcp4 0 0 *.1023 *.* LISTEN
tcp4 0 0 *.sunrpc *.* LISTEN
tcp4 0 0 localhost.domain *.* LISTEN
tcp4 0 0 server.domain *.* LISTEN

Grüße

Jürgen
 
Zuletzt bearbeitet von einem Moderator:
Hmm.
Und Du hast beim Router/FW/NATD auch in der rc.conf:
gateway_enable="YES"

Si senor.

Das war das erste, was ich überprüft habe

Ich frage jetzt einfach mal ins Blaue:
(*) Muß auf dem Cleint irgendetwas eingestellt werden?
(*) Muß auf dem Server über das im How-To genannte hinaus etwas konfiguriert werden?

Ich meine damit Einstellungen, die nicht im Handbuch erwähnt werden.
 
Eigentlich nicht.
Dein FW/Router/NATD hat zwei Interfaces, das eine zum DSL Modem, das andere an die switch fürs interne Netz. In diesem Netz hängen auch die Clients, und diese müssen als defaultroute die IP des internen Interface haben:
defaultrouter="192.168.0.254"
--> wenn dies deine IP der internen NIC auf FW/ROUTER/NATD wäre.

Wie wäre es einfach mal folgende rule einzufügen:

ipfw add allow ip from any to any

Kannst Du ja manuell hinzufügen und dann sehen was passiert. Sollte dann gehen, wenn nicht liegt der Fehler wahrscheinlich woanders und nicht an den Rules.
Setz die Rule also manuell hinter
${fwcmd} add divert natd log logamount 10000 all from any to any via tun0

Startest Du NATD aus /etc/rc.conf raus?
Und wenn ja, wie?
 
Dein FW/Router/NATD hat zwei Interfaces, das eine zum DSL Modem, das andere an die switch fürs interne Netz. In diesem Netz hängen auch die Clients, und diese müssen als defaultroute die IP des internen Interface haben: defaultrouter="192.168.0.254"

Autsch, das wars. Aus OS/2-Zeiten kannte ich noch den nicht dokumentierten Trick, dass als Default-gateway immer die Rechner-eigene IP-Adresse anzugeben war (route add default eigener_rechner netmask 255.255.255.0).
Dies hatte den schönen Nebeneffekt, dass man unabhängig vom Gateway-Rechner z.B. drucken konnte.

Offensichtlich ist der *BSD -Stack hier etwas strenger oder fehlerfreier:D.

Ich verstehe das aber schon richtig:
alles was über tun0 hereinkommt, wird an natd übergeben. natd "verteilt" anhand der Vorgaben in /etc/natd/natd.conf die IP-Pakete an die angegeben Clients. Die IP-Pakete, auf die die Regeln in natd.conf nicht passen, werden in an ipfw weitergegeben.


Ich möchte mich herzlich bei Dir bedanken, dass Du Dir die Zeit genommen hast, das "Problem" einzugrenzen.

Viele Grüße


Jürgen
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben