NAT und DSL

cat1510

Well-Known Member
Guten Abend

Es gibt leider noch kein Howto für einen NAT Router...
darum bastel ich gerade an einem rum. Problem ist es klappt bei mir noch nicht richtig.

Die Konfig habe ich aus den anderen How-to's entnommen und schon alles fertig. Kernel neu gebaut mit allen benötigen Modulen.
PPP.conf geschrieben NATd und IPFW und so weiter....

Klappt alles einwandfrei. Ich kann auch alle hosts im Internet per ICMP erreichen vom BSD Rechner. Leider routet er nicht... bzw er übersetzt die Pakete nicht. Was habe ich vergessen?

meine rc.conf:

hostname="bbtgateway.byteworker.local"
ifconfig_xl0="inet 192.168.0.9 netmask 255.255.255.0 media 100baseTX"
#defaultrouter="192.168.0.2"


kern_securelevel_enable="NO"
sendmail_enable="NO"
sshd_enable="YES"
usbd_enable="NO"
keyrate="fast"
keymap="german.iso"


firewall_enable="YES"
firewall_script="/etc/firewall/fwrules"
firewall_logging="YES"
natd_program="/sbin/natd"
natd_enable="YES"
natd_interface="tun0"
natd_flags="-dynamic -f /etc/firewall/natd.conf"

#ppp_enable="YES"
#ppp_mode="ddial"
#ppp_profile="default"

mein ipfw rules:

ipfw add 10 divert natd all from any to any via tun0
ipfw add 100 allow ip from any to any via xl0

den NAT daemon muss ich ja nicht extra installieren, der ist doch beim BSD dabei richtg?

Das PPP hab ich erstmal auskommentiert, damit es nicht sofort mitgestartet wird. Soll man eigentlich einen Router angeben, wenn der Computer selbst der Router ist?


Danke

CAT
 
Es gibt leider noch kein Howto für einen NAT Router...
darum bastel ich gerade an einem rum. Problem ist es klappt bei mir noch nicht richtig.

Gibt es nicht? Und was ist das:
http://www.bsdforen.de/forums/showthread.php?s=&threadid=148

[...]
natd_program="/sbin/natd"
natd_enable="YES"
natd_interface="tun0"
natd_flags="-dynamic -f /etc/firewall/natd.conf"

Du sagst im was das NAT Programm ist, auch wo die NAT rules zu finden sind (etc/firewall/natd.conf). Aber wo ist die /etc/firewall/natd.conf?

Inhalt beispielsweise (wie im oben genannten howto):

redirect_port tcp 192.168.0.203:80 80
redirect_port udp 192.168.0.203:80 80
redirect_port tcp 192.168.0.202:22 22
redirect_port udp 192.168.0.202:22 22
redirect_port tcp 192.168.0.203:21 21
redirect_port udp 192.168.0.203:21 21

Leiet die ports 80, 22 und 21 auf die internen IPs um. Wobei auf dem hostsystem natürlich kein daemon auf diese ports lauschen sollte.
 
Original geschrieben von cat1510
Guten Abend

Es gibt leider noch kein Howto für einen NAT Router...
darum bastel ich gerade an einem rum. Problem ist es klappt bei mir noch nicht richtig.

Die Konfig habe ich aus den anderen How-to's entnommen und schon alles fertig. Kernel neu gebaut mit allen benötigen Modulen.
PPP.conf geschrieben NATd und IPFW und so weiter....

Klappt alles einwandfrei. Ich kann auch alle hosts im Internet per ICMP erreichen vom BSD Rechner. Leider routet er nicht... bzw er übersetzt die Pakete nicht. Was habe ich vergessen?

meine rc.conf:

hostname="bbtgateway.byteworker.local"
ifconfig_xl0="inet 192.168.0.9 netmask 255.255.255.0 media 100baseTX"
#defaultrouter="192.168.0.2"


kern_securelevel_enable="NO"
sendmail_enable="NO"
sshd_enable="YES"
usbd_enable="NO"
keyrate="fast"
keymap="german.iso"


firewall_enable="YES"
firewall_script="/etc/firewall/fwrules"
firewall_logging="YES"
natd_program="/sbin/natd"
natd_enable="YES"
natd_interface="tun0"
natd_flags="-dynamic -f /etc/firewall/natd.conf"

#ppp_enable="YES"
#ppp_mode="ddial"
#ppp_profile="default"

mein ipfw rules:

ipfw add 10 divert natd all from any to any via tun0
ipfw add 100 allow ip from any to any via xl0

den NAT daemon muss ich ja nicht extra installieren, der ist doch beim BSD dabei richtg?

Das PPP hab ich erstmal auskommentiert, damit es nicht sofort mitgestartet wird. Soll man eigentlich einen Router angeben, wenn der Computer selbst der Router ist?


Danke

CAT
Nun, ich hab das jetzt nur überflogen - aber es sieht mir so aus, als ob du den Traffic, der über das externe Interface (tun0) geht nicht explizit erlaubst - das ist allerdings voraussetzung, um deine Clients ins Internet zu bringen!

http://www.bsdforen.de/forums/showthread.php?s=&threadid=148

Da ist btw auch ein Howto ;)

Gruß
 
Sorry!

hmm vieleicht habe ich das ein wenig falsch verstanden.

Da traut man sich ja gar nicht mehr zurück zu schreiben.

Das How-to von grunix kann ich schon auswendig.
Zusätzlich habe ich auch noch die ganzen Links angeschaut aus dem Forum.

Die natd.conf kann ich doch leer lassen, wenn ich keine internen
Webserver etc. laufen lasse oder?

Wenn ich also:

ipfw add allow ip from any to any via ed0
ipfw add allow ip from any to any via xl0

in meine fwrules mit einbinde sollte es laufen?
 
Sorry!

hmm vieleicht habe ich das ein wenig falsch verstanden.

Da traut man sich ja gar nicht mehr zurück zu schreiben.
Na, wir reissen dir nur den Kopf ab, sonst nix ;)

Die natd.conf kann ich doch leer lassen, wenn ich keine internen
Webserver etc. laufen lasse oder?

Wenn ich also:

ipfw add allow ip from any to any via ed0
ipfw add allow ip from any to any via xl0

in meine fwrules mit einbinde sollte es laufen? [/B]
[/quote]
Ah, ich glaub jetzt sehe ich das Problem. Du musst natd natürlich sagen welches Interface es nutzen soll - wenn ed0 dein externes ist (wenn du per DSL Online gehst, wird es tun0 sein), musst du das natd mitteilen:

Änder einfach mal den entsprechenden Eintrag in der rc.conf

Code:
natd_flags="-dynamic -n tun0 -f /etc/firewall/natd.conf"
Danach sollte es funktionieren..
Gruß
 
Hab ich da was falsch verstande? ;-)
Du hast einfach nur nen FreeBSD Router und andere Rechner hinter diesem sollen über diesen ins Netz kommen?

ipfw add allow ip from any to any via ed0
ipfw add allow ip from any to any via xl0

xl0 ist dein GW, zum internen Netz, richtig?
Dann reicht es dies auch anzuegeben. Was soll denn ed0 sein? Dein device das tun0 ist, sprich über das DSL rennt?

ipfw add 10 divert natd all from any to any via tun0

Beispiel:

ipfw add allow ip from any to any via lo0
ipfw add allow ip from any to any via xl0

# Erlaubt alle Verbindungen welche von hier initiiert wurden
ipfw add allow tcp from any to any out xmit tun0 setup

# Wenn die Verbindung einmal hergestellt wurde, erlaube dieser offen zu
# stehen
ipfw add allow tcp from any to any via tun0 established
 
Änder einfach mal den entsprechenden Eintrag in der rc.conf

Code:
natd_flags="-dynamic -n tun0 -f /etc/firewall/natd.conf"
Danach sollte es funktionieren..
Gruß [/B]

Was ist das denn? :-))
Ne, er hat keine natd.conf, er will das glaube ich auch gar nicht, er will einfach nur das interne clients raus können, und da hat er eben in seinen ipfw rules das falsche stehen.

Den kram mit NAT und natd.conf kann er aus der rc.conf rausnehmen, da er es so oder so nicht nutzt, ausser er will portforwarding machen.
 
Original geschrieben von grunix
Was ist das denn? :-))
Ne, er hat keine natd.conf, er will das glaube ich auch gar nicht, er will einfach nur das interne clients raus können, und da hat er eben in seinen ipfw rules das falsche stehen.

Den kram mit NAT und natd.conf kann er aus der rc.conf rausnehmen, da er es so oder so nicht nutzt, ausser er will portforwarding machen.

Hmmm. Stimmt eigentlich. Mal wieder nicht ausreichend nachgedacht.

;)
 
Hallo

Ich habe eine natd.conf angelegt. Zur Zeit möchte ich nur mit meinen Windowsbüchsen nach draußen ins Internet.
Später einen ftp noch mitlaufen lassen und noch andere tolle Sachen. Erstmal muss ich aber ein wenig BSD kennen.

Und wenn ich euch jetzt sage, daß da zur Zeit WinRoute läuft fallt Ihr bestimmt um. Leider hab ich zuviel Zeit mit Windows verbracht und meinen MCSE gemacht. Darauf bin ich heut nicht mehr stolz und hab mich neu orientiert. ;o)

Ich habe eine xl0 und eine ed0 Karte in meinem Kompi.

die xl0 stellt die Verbindung zum LAN her und die ed0 ist nur der alias für den tun0 device umm ppp zu nutzen.

Wenn ich nur ein bißchen NAT haben will muss ich nur natd_enable="YES" angeben?
und noch das nat Interface?
natd_interface="tun0"

Richtig? Wie kann ich denn die log Dateien vom system boot nachschauen, vieleicht ist da ein Fehler...

Danke

CAT
 
Du musst bei Deinen Windows Boxen folgendes machen:

1. nameserver eintragen
2. als Gateway die IP Deines xl0 Interfaces angeben.

Dein FreeBSD Router:

Vergiss Deine nard.conf und den anderen Kram.
Du hast ipfw am laufen?
Was hast Du dem Kernel mitgegeben? Oder lädst Du Module?

Ansonsten, musst Du Deinen ipfw rules mitgeben, dass Du alles über xlo erlaubst, und dann das du jede verbindung die über tun0 geht (das device ed0, bzw. diese Bezeichnung, vergiss sie), auch erlaubst.
DIe rules habe ich oben schon angegeben.
 
Ich habe einen dhcp server, aber auf BSD Basis!

Der gibt den WinBüchsen alles was Sie brauchen mit.

Was passiert denn, wenn ich meinen Win Kisten die IP vom BSD Router als DNS mitgebe? Macht der dann DNS forwarding und versucht die Anfrage über einen Server aus der resolv.conf aufzulösen? Oder brauch ich dafür den bind server?
 
Du hast aber schon die nötigen Einträge wegen netgraph und so im Kernel?

Wenn Du die IP des FreeBSD Routers den Winkisten gibst, dann nur als Gateway, denn dazu ist er konfiguriert. Willst Du das auch als DNS nutzen, musst Du nen DNS auf dem BSD Rechner aufsetzen (bind oder tinydns).
Oder einen Proxy? Dann musst Du einen Proxy aufsetzen.

Gebe doch den winkisten einfach als GW die interne IP, also xl0, der BSD Kiste. und die externen nameserver deines Providers.
 
Hmm ich danke Dir für Deine Zeit und werde Dir morgen meine Erfolge oder Niederlagen posten.

Die nötigen Einträge habe ich im Kernel gemacht und den auch neu übersetzen lassen. War ja alles kein Problem.
Ich möchte später einen eigenen DNS Server haben um das forwarding zu nutzen. Damit setze ich mich dann auch noch auseinander.

Proxy mag ich nicht. NAT und IP Masquerading sind viel cooler.

Schönen Abend noch und Danke!

Cat
 
Hallo!

Ich danke Dir für den Link. Die Guides sind sehr gut und ausführlich beschrieben. Es läuft alles wunderbar.
Ein kleiner Tippfehler ist mir aufgefallen, beim einbinden des named. Es muss heißen cd /etc/namedb oder?

So jetz hab ich noch ein Problem mit dem Natd denn ich habe 2 normale Netzwerkverbindungen. Das heißt ich habe eine "echte" Standleitung, die auch auf beiden Karten mit IP arbeitet.
Was soll ich ihm denn jetzt sagen? habe das nat interface in meine Karte geändert. Und überall, wo tun0 stand in ed0 geändert. KLappt aber nicht. er sagt beim boot: natdnatd options recognized... Hab nichts darüber gefunden...

Vielen Dank

CAT
 
Ein kleiner Tippfehler ist mir aufgefallen, beim einbinden des named. Es muss heißen cd /etc/namedb oder?

Ja muss /etc/namedb heißen. Danke für den Hinweis, war natürlich keine Absicht.

Zu deiner anderen Frage weiß ich jetzt leider keine Antwort. tun0 in deine Netzwerkkarte umschreiben dürfte aber nicht so ohne weiteres funktionieren, wie du auch schon mitbekommen hast.
 
So jetz hab ich noch ein Problem mit dem Natd denn ich habe 2 normale Netzwerkverbindungen. Das heißt ich habe eine "echte" Standleitung, die auch auf beiden Karten mit IP arbeitet.
Was soll ich ihm denn jetzt sagen? habe das nat interface in meine Karte geändert. Und überall, wo tun0 stand in ed0 geändert. KLappt aber nicht. er sagt beim boot: natdnatd options recognized... Hab nichts darüber gefunden...

Das ist also ein anderer Rechner?
Wenn Du eine echte Standleitung hast, dann brauchst Du ja da drauf kein ppp, somit auch kein tun0.
Geht die Verbindung ins Netz, oder geht diese auch nicht? Oder funktioniert einfach das NAT nicht? Und, was willst Du machen? Sollen dahinterliegende Clients auch einfach nur wieder über die Box ins Netz, oder soll da NAT stattfinden für ports, bzw. Dienste ala http,...?

Zu guter Letzt, da ich meine Kristallkugel verliehen habe, show config.
 
Hi

Also es ist der gleiche Rechner. Und es soll einfach nur zwischen den NIC's NAT geschehen. Das heißt eine Karte ist xl0 zum LAN und ed0 zum router.

Zwischen diesen beiden soll der dann NAT machen.
Das Ganze ist auf DSL getestet und funzt einwandfrei.

von außen müssen keine Dienste erreichbar sein.

Das System wird auf DSL umgestellt werden und darum habe ich das schon mal eingebaut... ist doch nicht schlimm oder?

meine rc.conf

hostname="test.local"
ifconfig_ed0="inet 213.217.80.106 netmask 255.255.255.248"
ifconfig_xl0="inet 192.168.0.9 netmask 255.255.255.0 media 100baseTX"
#defaultrouter="192.168.0.2"


kern_securelevel_enable="NO"
sendmail_enable="NO"
sshd_enable="YES"
usbd_enable="NO"
keyrate="fast"
keymap="german.iso"



#ppp_enable="YES"
#ppp_mode="ddial"
#ppp_profile="default"
#ifconfig_ed0="up"

firewall_enable="YES"
firewall_script="/etc/firewall/fwrules"

gateway_enable="YES"

natd_enable="YES"
natd_interface="ed0"
#natd_flags="-dynamic -f /etc/firewall/natd.conf"
#natd_program="/sbin/natd"

named_enable="YES"
named_flags="-u bind -g bind"

meine ipfw rules:

# NATd erlauben
ipfw add 10 divert natd all from any to any via ed0

# Alle lokalen Verbindungen erlauben
ipfw add allow tcp from me to any out via lo0 setup keep-state
ipfw add deny tcp from me to any out via lo0
ipfw add allow ip from me to any out via lo0 keep-state

# Alle Daten durch localhost und der NIC erlauben
ipfw add allow ip from any to any via lo0

# Alles über dieses Interface wird erlaubt
ipfw add allow ip from any to any via xl0

# Alle Verbindungen welche von hier initialisiert werden erlauben
ipfw add allow tcp from any to any out xmit ed0 setup

# Verbindung offen halten, wenn offen
ipfw add allow tcp from any to any via ed0 established

# Bestimmte ICMP Pakete erlauben (z.B. fuer Ping)
ipfw add allow icmp from any to any icmptype 3,4
ipfw add allow icmp from any to any out icmptype 8
ipfw add allow icmp from any to any in icmptype 0

# This sends a RESET to all ident packets.
ipfw add reset log tcp from any to any 113 in recv ed0


Hab ich was wichtiges vergessen? in meiner named.conf ist der DNS-Server meines Providers eingetragen.

Named läuft einwandfei. Und dann ist da auch noch ein DHCP am rennen und macht seinen Dienst einwandfrei.

Danke für Deine Mühe!

CAT
 
Also erstmal sollte man das ganze auf eine so wenig Fehlerquellen wie möglich reduzieren.

Dein DHCP läuft wie du sagst. Der muss auch korrekt laufen, denn sonst kennen ja deine Clients den Gateway und DNS-Server nicht. Zur Not hätte ich den DHCP deaktiviert und alle Daten statisch vergeben, aber gut.

Als nächstes die rc.conf. Die ist soweit okay. PPP brauchst du wie schon gesagt nicht, da du ja eine echte Standleitung hast die an eines der Netzwerkinterface gebunden ist.

Die IPFW Rules ist auch okay.

Nun sollte man testen...
Ist dein DNS Provider vom F-BSD-Router zu erreichen (ping)?
Wenn ja, dann teste ob dieser auch von einem der Clients anpingbar ist. Wenn nicht, dann muss es am IP-Forwarding zwischen den beiden Netzinterfaces in deinem F-BSD-Router liegen => Hast du sysctl -w net.inet.ip.forwarding=1 aktiviert? Nur dadurch ist es dem System gestattet zwischen den beiden Netzwerkkarten Daten hin und her zu geben.

Mehr fällt mir jetzt auch erstmal nicht ein. Ich hatte leider noch nie das Verknügen mit einer Standleitung :)
 
Zuletzt bearbeitet:
Guten Abend

Habe das Handbuch studiert und bekomme folgende Fehlermeldung:

tester# natd -interface ed0
natd: Unable to create divert socket.: Protocol not supported
tester#

Den Kernel hab ich mit den options, die im Handbuch beschrieben sind neugebaut:

options IPFIREWALL
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSE

meine rc.conf:

kern_securelevel_enable="NO"
sendmail_enable="NO"
sshd_enable="YES"
usbd_enable="NO"

gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="ed0"
natd_flags=""

ifconfig_vr0="inet 192.168.0.8 netmask 255.255.255.0"
ifconfig_ed0="inet 192.168.0.70 netmask 255.255.255.0"
#defaultrouter="192.168.0.2"
hostname="tester.local"

Habe leider keine Ahnung mehr wo das Problem liegt.

CAT
 
Wenn der Kernel mit IPDIVERT gebaut ist und das Interface auch wirklich ed0 ist,
dann ist das schon etwas eigenartig.

Bei mir ist auf dem alten Server das externe Interface isp0 wegen ISDN.

Meine ipfw-Regeln sehen so aus:

1000 allow ip from any to any via lo0
1100 deny ip from 127.0.0.0/8 to 127.0.0.0/8
2000 deny tcp from any 137-139 to any via isp0
2100 deny udp from any 137-139 to any via isp0
2200 deny ip from 192.168.0.0/16 to 192.168.0.0/16 via isp0
31000 divert 8668 ip from 192.168.x.x/24 to any via isp0
32000 divert 8668 ip from any to y.y.y.y via isp0
65000 allow ip from any to any

Und in /etc/rc.conf:
natd_enable="YES"
natd_interface="isp0"

(y.y.y.y ist meine externe IP-Adresse)
 
Problem anders beseitigt.

Guten Morgen!

Schläfst auch vor dem Computer?

Es läuft bei mir mittlerweile. Habe einfach mal bei nat_flags alles rausgenommen und nur -dynamic eingesetzt. Sofort hat er es gemacht. Vieleicht habe ich irgendwo einen anderen Fehler gemacht. Nachdem der Computer neuinstalliert und der Generic Kernel mit den zusätzlichen Optionen nochmal kompiliert war lief alles auf Anhieb! BSD ist geil!

Schönen Tag noch und grüß Berlin.
Tolle Stadt und coole Radiosender (104.6rtl)!

CAT
 
Re: Problem anders beseitigt.

Original geschrieben von cat1510
Schläfst auch vor dem Computer?

Naja, ist mal wieder etwas später geworden :rolleyes:
Ich sitze hier neben dem Rechner, der das
Filesystem-Image von der defekten Platte
auf die Ersatz-Platte schreibt und seit ca.
24 Stunden bei ca. 2GB von 7 hängt.

Inzwischen ist er von 2.2 auf 2.4 gekommen...
Leider kenne ich kein Programm, das nur die belegten Blöcke kopiert um ein Image
des Dateisystems zu machen und mit dump eine Kopie zu ziehen bringt nix, weil
die wesentliche Directory auf den defekten Sektoren liegt und er so von 3GB Daten
nur ein paar 100 MB mitbekommt.
 
Kann ich Dir leider nicht helfen, denn ich muss noch viel über BSD lernen. Warum hast Du kein Raid im Einsatz? Nicht teuer aber notwendig für wichtige Daten oder?

Gute Nacht.

CAT
 
Mit der Austausch-Platte habe ich jetzt auch erstmal ein vinum
aufgesetzt und mir vorgestern noch eine zweite Platte geholt.

Die kaputten Sektoren kamen auch aus heiterem Himmel.
Oder S.M.A.R.T. ist nur ein Placebo.
 
Zurück
Oben