[Kommentare] FreeBSD DSL Router auf Basis von pf

Wirklich tolles Howto!!

Ich würde bloss den MTU wert auf 1280 senken, weil man sonst Probleme beim
öffnen einger Webseiten (gmx, ebay etc) hat.

servus
 
das pf.conf script

Hi
ich hab mal eine frage ist es möglich für Mirc (Dcc) die port auf alle ips die ich beim dhcp server angegeben habe zu forwarden da ich ja sonst meinen rechner am besten eine feste ip zuweisen müßte und die ports per nat forwarden muß dann nützt mir nur der dhcp server nichts mehr da ich ja dann auch normal per firewall oder so routen könnte :(

MFG
BaCkBone
 
hi
Hab von dem howto den teil mit pf an meiner Kiste ausprobiert. das howto ist klasse bis auf paar kleinere sachen die mir aufgefallen sind z.b. den teil mit dem Kernel anpassen:
Code:
# Eigene Einträge
options         NETGRAPH
options         NETGRAPH_SOCKET
options         NETGRAPH_PPPOE
options         NETGRPAH_ETHER
options         PFIL_HOOKS
options         RANDOM_IP_ID
options         INET6
hat bei mir nicht so ganz funktioniert ich musste das NETGRAPH_ETHER weiter oben hinschreiben sonst kam bei mir immer ein Fehler. so ist es am schluss dann gegangen:

Code:
# Eigene Einträge
options         NETGRAPH
options         NETGRAPH_ETHER
options         NETGRAPH_SOCKET
options         NETGRAPH_PPPOE
options         PFIL_HOOKS
options         RANDOM_IP_ID
options         INET6
und das Regelset habe ich dann am schluss mit hilfe der links selber geschriben
sieht bei mir nun so aus:

Code:
### Variablen ###

Intern = "ed1"
Extern = "tun0"
IntNet = "192.168.0.0/24"
RouterIP = "192.168.0.2"
Loop = "lo0"

# Adressen die auf dem externen Device nicht geroutet werden
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 = "{ 21, 22, 80 }"
#InServicesUDP = "{   }"

### Options ###

# Statistiken fuer die DSL-Verbindung
set loginterface $Extern

# Beendet inaktive Verbindungen schneller
set optimization aggressive

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

### NAT & Forward ###

# NAT Aktivieren
nat on $Extern from $IntNet to any -> $Extern static-port

# NAT Rules
rdr on $Extern proto tcp from any to any port 80 -> 192.168.0.102 port 80

# Falls Active FTP gewünscht ist, folgendes Auskommentieren:
# rdr on $Intern proto tcp from !$RouterIP to !$IntNet port 21 -> 127.0.0.1 port 8021

rdr-anchor redirect

### Filter ###

# Generelle Block Regel
block on $Extern
block return log on $Extern

# IPv6.0 Blocken
block quick inet6

# Loopback Device darf alles
pass quick on $Loop

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

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

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

# Ping akzeptieren
pass in quick on $Extern inet proto icmp all icmp-type 8 code 0 keep state

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

anchor passin

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

funktioniert alles in allem jetzt eigentlich recht gut
 
Also...

Ich bin im Moment dabei, meine ersten FreeBSD-erfahrungen zu sammeln, indem ich einfach mal nen router-dingens nach diesem HowTo aufsetze.

Ich muss sagen: Super howto! Bisher bin ich doch ziemlich gut durchgekommen!

Aber noch zwei kleinere Fehler hab ich entdeckt:

Einmal machte bei mir die Neukompilierung des Kernels probleme, und zwar wegen folgendem Eintrag:

options NETGRPAH_ETHER

Ich weiß nicht, wieso, aber so reinkopiert (copy&paste ;-) ) funktioniert das nicht. Er bringt beim config-befehl eine meldung alà "konnte netgraph_ether-modul nicht finden" oder so. Ich hab dann ne weile rumprobiert und auf einmal gings dann, obwohls jetzt wieder folgendermaßen aussieht:

options NETGRAPH
options NETGRAPH_SOCKET
options NETGRAPH_PPPOE
options NETGRAPH_ETHER
options PFIL_HOOKS
options RANDOM_IP_ID
options INET6

edit: Jetzt hab ich ebent den Fehler gesehen: Es heißt netgraph, nicht netgrpah... ;-)


Das ist zwar genau das gleiche, aber jetzt funktionierts...!?

Naja, das zweite wäre ein kleiner Tippfehler beim Laden der Module:

# kldload /usr/local/modules/pflog.ko
# ifconfig pflog0 up
# kldload /usr/local/modules/pfsync.ko
# ifconfig pfsync0 up
# kldload /usr/local/pf.ko

Hier ist die letzte Zeile offensichtlich falsch, pf.ko befindet sich ja auch in /usr/local/modules/...
(für einen Anfänger/abtipper kann das schon mal kurz verwunderlich sein... ;-) )


Ansonsten aber super Dingens! Ich komm jetzt zwar erst dann zu punkt 5.1, aber wenn ich da nochmal was find, werd ich das dann auch noch hier reinposten...

greetings!
 
Noch ein NOOB, noch ein Problem

Hallo,

Ich wollte auch pf für einen Router/AP benutzen. Habe mich auch an das Howto gehalten aber bei "config MYKERNEL" kommt dann "MYKERNEL: unknown option "RANDOM_IP_ID"".

Was mache ich falsch?
Ich möchte die Option aber auch nicht weglassen (Ich weiss, dass das geht-aber ich wollte die Option benutzen (für was hat man denn pf?)).

(Ich benutze FreeBSD 5.3 auf einem Compaq Deskpro Schlagmichtodistjaauchnichtwichtig (200 PI mmx).
 
RANDOM_IP_ID ist jetzt über sysctl (net.inet.ip.random_id) aktivierbar

das Erf schrieb:
Hallo,

Ich wollte auch pf für einen Router/AP benutzen. Habe mich auch an das Howto gehalten aber bei "config MYKERNEL" kommt dann "MYKERNEL: unknown option "RANDOM_IP_ID"".

Was mache ich falsch?
Ich möchte die Option aber auch nicht weglassen (Ich weiss, dass das geht-aber ich wollte die Option benutzen (für was hat man denn pf?)).

(Ich benutze FreeBSD 5.3 auf einem Compaq Deskpro Schlagmichtodistjaauchnichtwichtig (200 PI mmx).
 
hallo,

ich habe FBSD 5.3 RC1,

bekomme aber bei der

kernelconf:

options PFIL_HOOKS

beim config kernelconf

Code:
unknown option "PFIL_HOOKS"

weißt jemand warum bzw gibt es eine Möglichkeit diese option genau wie RANDOM_IP_ID auch über die sysctl.conf nachzuladen???

habe irgendwo gelesen, dass diese option ab 5.3 eigentrlich im GENERIC sein sollte...ist es aber bei mir zB auch nicht der fall...

jeamdn eine :gpaul: idee???
:)
 
aus /usr/src/UPDATING
20040922:
PFIL_HOOKS are a fixed part of the network stack now and do not
need to be specified in the kernel configuration file anymore.
Remove 'options PFIL_HOOKS' from your kernel config file.
 
Ich schrieb:
aus /usr/src/UPDATING
20040922:
PFIL_HOOKS are a fixed part of the network stack now and do not
need to be specified in the kernel configuration file anymore.
Remove 'options PFIL_HOOKS' from your kernel config file.


ja, das hatte ich ---hier--- auch schon gelesen... Dort hatte der jemand aber geschr., dass beim comp. von PF dann doch ein Fehler kam, dass PFIL_HOOKS fehlt...
ich werde es einfach ohne ausprobieren müssen...


btw: es ist richtig, dass nun ab 5.3 alle Paketfilter (also auch IPFW(2)) diese option standard mäßig verwenden,oder?
aber ab 5.3 sollte glaube ich auch INET6 im GENERIC drin sein und das ist es bei meiner 5.3 RC1 zB auch nedde...

seltsam
 
Zuletzt bearbeitet:
so ein sch*** mist :-(

# cd /usr/ports/security/pf
# make install clean

dann kommt:
Code:
pf_freebsd-2.03 pf moved to the base system, please build it from there

das kann man glaub ich auch irgendwie ignorieren oder so???

das ist doch nicht normal, dass das kommt, oder?

habe auch schon in /usr/ports die MOVED durchgelesen, aber nichts im letzten hlaben jahr darüber gefunden, dass der port sich verschoben hat...

bei #make search name="pf_freebsd-2.03" kommt auch nur 1 eintrag..undzwar /security/pf

??????
 
hobby schrieb:
so ein sch*** mist :-(

# cd /usr/ports/security/pf
# make install clean

dann kommt:
Code:
pf_freebsd-2.03 pf moved to the base system, please build it from there

das kann man glaub ich auch irgendwie ignorieren oder so???

das ist doch nicht normal, dass das kommt, oder?

habe auch schon in /usr/ports die MOVED durchgelesen, aber nichts im letzten hlaben jahr darüber gefunden, dass der port sich verschoben hat...

bei #make search name="pf_freebsd-2.03" kommt auch nur 1 eintrag..undzwar /security/pf

??????
mh? den port gibs nich mehr fuer die 5er reihe. pf gehoert jetzt zum betriebssystem.
zum aktivieren das hier in das kernel-config-file
Code:
# pf zeugs
device          pf              # required
device          pflog           # optional
device          pfsync          # optional
ipv6 aktiviert man mit
Code:
options         INET6                   # IPv6 communications protocols
auch in der kernel-config.

danach system bauen und instalieren und es geht.

gruss, matze

edit: aber lies dir die anweisungen in /usr/src/UPDATING zu pf durch! da muessen ein paar anpassungen getaetigt werden.
 
Zuletzt bearbeitet:
danke dir für deine mühe matze!

klappt jetzt prima....allerdings muss ich mich noch bissl reinfuchsen in pf...hatte vorher ausschließlich mit ipfw zu tun, daher.

zB weiß ich jetzt gar nicht WO genau meine log-dateien von pf sind....bei pf gibts also ein extra if dafür, ok, aber wo kann ich das alles anschauen.
muss man bei pf genau wie bei ipfw vielleicht in der /etc/syslog.conf einen eintrag anlegen, bloß anstatt "ipfw" eben "pf"???

btw..ich werde mich die tage mal nähergehend damit beschäftigen müssen.

habe auch gehört, dass pf schneller sein soll, als ipfw und auusserdem werde ich später einen transp. squid aufsetzen, was mit pf ja wesentlich einfach ist, afaik.

gN8
 
Zuletzt bearbeitet:
Ein weiteres Intressantes Feature finde ich auch die Möglichkeit bestimmten Rechnern über DHCP eine feste IP-Adresse zuzuteilen. Um das umzusetzen braucht man erstmal die MAC-Adresse der Netzwerkkarten des Clients.
...
Wie man unter Windows dran kommt weiss ich leider nicht, wenn jemand Infos dazu hat möchte er sich bitte an mich wenden.
Bei der Kommunikation von Hosts werden sogenannte ARP-Tabellen angelegt, bzw. gepflegt (2 Spalten):
Die erste Spalte beinhaltet Mac-Adressen, die zweite Spalte beinhaltet die IP-Adressen.
z.b.
00:50:04:56:2b:79 10.100.4.10
00:50:04:56:2b:C9 10.100.4.11
00:50:04:56:2b:B3 10.100.4.50
Auslesen kann man die Tabelle z.b. mit arp -a IP-Adresse, dies setzt allerdings vorraus das die IP-Adresse in der Arp-Tabelle vorhanden ist! Kommunikation kann schon ein einfacher Ping sein - also z.B. ping 10.100.4.50 u. ein anschließender arp -a 10.100.4.50 gibt die Mac-Adresse [00:50:04:56:2b:B3] aus! Gut um entfernte Mac-Adressen herauszufinden :)

Grüße

Björn

Ps.:
- Den Befehl arp gibt es also auch für *BSD - man muss also nicht unbedingt nen
Bootprotokoll auslesen ;)
- Ein arp /help gibt weitere Informationen unter Windows!
- Wenn man vor der Windows Workstation hockt reicht auch ein simples ipconfig
/all um eine MAC herauszufinden...

MAC -> Media Access Controll
ARP -> Address Resolution Protocol
 
Zuletzt bearbeitet:
hobby schrieb:
...
zB weiß ich jetzt gar nicht WO genau meine log-dateien von pf sind....bei pf gibts also ein extra if dafür, ok, aber wo kann ich das alles anschauen.
...
man pflogd hilft - tcpdump -r /var/log/pflog

Grüße

Björn
 
Da es einige Änderungsorschläge gab, frage ich mich ob diese auch in das howto übernommen worden sind? Mittlerweile haben wir FreeBSD 6 - ist das howto für fbsd 6 zu gebrauchen?

Ich hoffe hier schaut noch jemand rein :)
 
Das Howto ist wohl nicht mehr ganz so aktuell. Insbesondere steht im Handbuch, dass man den port /security/pf bei den neueren FreeBSD-Versionen nicht benutzen soll. Pf ist hier schon Teil des Basissystems.
Sowieso ist im Handbuch gut beschrieben, wie man pf aktiviert. Auch wie man DSL (pppoE) einrichtet ist dort gut erklärt.
Das Regelset für pf habe ich mit leichten Veränderungen von der pf-faq (openbsd.org) übernommen. Ganz am Ende der faq ist dieses erklärte Beispiel. In der faq steht auch sonst alles drin, was man über pf wissen muss. Zumindest als kleiner Heimnetzwerker.
Und wenn man sich im Handbuch noch das Kapitel über Gateways und Routen durchliest, ist aus einer Minimalinstallation von FreeBSD ganz schnell schon fast ein Router geworden. Dann muss man sich nur noch um die restlichen Dienste kümmern, die man haben will.
 
Zurück
Oben