PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : OpenBSD 3.0 als DSL-Router



[moR-pH-euS]
29.03.02, 23:19
hallo,
da ich jetzt schon seit über einem jahr einen suse-router hatte und mich damit glaube
ich nun einigermassen auskenne, wollte ich mir einen neuen dsl-router basteln mit
openbsd 3.0; wenn ihr soetwas vorhabt solltet ihr euch mit vi anfreunden, da es der
einzige editor unter openbsd ist :-)
zuerst solltet ihr euch openbsd besorgen, also geht man auf www.openbsd.org und saugt
sich openbsd 3.0 von einem mirror;
danach erstellt ihr euch eine bootdiskette mit

dd if=floppy30.fs of=/dev/euer floppy

in windows mit:

fdimage -q floppy30.fs a:

so, nun könnt ihr von dieser disc booten; jetzt kommen erst einmal ein paar schwarz
blaue zeilen und wenn alles initialisiert wurde könnt ihr openbsd installieren; folgt
dabei am besten der anleitung auf openbsd.org
http://www.openbsd.org/faq/faq4.html (die faq ist im übrigen spitze gemacht, sehr
übersichtlich und gut erklärt, aber lest sie auf englisch da die deutsche veraltet ist ;-)

sehr wichtig:
konfiguriert nur die netzwerkkarte die ins interne lan geht, die andere die am dsl-modem
hängt nicht konfigurieren !!! die nic die ins interne lan geht, muss ins gleiche subnetz
wie die clients (also z.B. nic vom router 192.168.1.1, w2k client 192.168.1.2 usw.)
und trage gleich den nameserver für die interne router-karte ein von der telekom 212.185.249.116
oder 217.5.115.7
wenn ihr euch wundert warum es kein eth0 usw. gibt, die bezeichnung für eure netzwerkkarte ist
hardwarespezifisch (bei 3Com xl0, bei einem anderen anbieter ist sie wieder anders, bei intel war
es glaube ich fxp0 ...)

wenn ihr openbsd installiert habt solltet ihr als nächstes die tastatur auf deutsch
umstellen (und verwendet bei der Installation bloss keine sonderzeichen im root-passwort,
ansonsten könnt ihr euch erstmal nicht einloggen, bis ihr merkt das es ja jetzt deutsch
ist und nicht mehr englisch :-)
umstellen von der tastatur von en auf de:

vi /etc/wsconsctl.conf

nun so ändern:

keyboard.encoding=de

so, nun haben wir nach dem boot eine deutsche tastatur, wenn ihr sie gleich wollt und
nicht booten wollt:

wsconsctl -w keyboard.encoding=de

als nächstes sollte man die bash installieren, ausser ihr findet gefallen an der normalen
sh, aber ich persönlich vermisse die autovervollständigung und pfeil nach oben/unten;
ich hab dazu einfach das bash-2.05-static.tgz package gesaugt;
dann nach /usr/src/bash entpackt;

tar xfvz bash-2.05-static.tgz


dann ins bin verzeichnis wechseln und bash nach /bin
kopiert;

cp bash /bin

dann noch die rechte richtig eingestellt im /bin verzeichnis:

chmod -w bash

und

chgrp bin bash

das es am ende so aussieht:

-r-xr-xr-x 1 root bin 737280 Mar 26 14:27 bash

jetzt muss noch die default-shell von root geändert werden und die bash bei den shells eingetragen
werden

vi /etc/shells
und /bin/bash hinzufügen.

default-root shell ändern:
chsh

und ändert die Zeile "Shell: /bin/csh" zu "Shell: /bin/bash"

so jetzt haben wir nach dem booten eine deutsche tastatur und die bash.

jetzt erstellen wir uns eine datei für dienste die wir nicht brauchen, d.h. damit
diese Dienste nicht automatisch gestartet werden:

vi /etc/rc.conf.local

und tragen das hier ein

sendmail_flags=NO
portmap=NO
inetd=NO
ntpd=NO


so jetzt können wir uns an die konfigurations-dateien für dsl machen.
dazu müssen wir 3 config-dateien erstellen in /etc/ppp
zuerst die /etc/ppp/ppp.conf
(WICHTIG: immer ein LEERZEICHEN vor jeder zeile in den dateien die ihr erstellt wo ich es auch gemacht habe damit es funktioniert)

pppoe:
set device "!/usr/sbin/pppoe -i euer interface zum dsl-modem"
disable acfcomp protocomp vjcomp deflate pred1
deny acfcomp
set mru 1492
set mtu 1492
set crtscts off
set speed sync
accept lqr

set dial
set login
set timeout 0
set authname "t-online-nr._und_anschlusskennung#0001@t-online.de"
set authkey euer passwort
set ifaddr 192.168.1.1/0 192.168.1.2/0 0.0.0.0 0.0.0.0
add default HISADDR
enable dns


wichtig sind die anführungszeichen beim authname da die bash ansonsten probleme
mit dem sharp (#) hat;

jetzt brauchen wir noch 2 scripte damit dsl hochgefahren und heruntergefahren wird:
(WICHTIG: immer ein LEERZEICHEN vor jeder zeile in den dateien die ihr erstellt wo ich es auch gemacht habe damit es funktioniert)

/etc/ppp/ppp.linkup
MYADDR:
! sh -c "/sbin/ifconfig pflog0 up"
! sh -c "/sbin/pflogd"
! sh -c "/sbin/pfctl -e -l tun0 -F all -O aggressive -R /etc/pf.conf -N /etc/nat.conf"

(WICHTIG: immer ein LEERZEICHEN vor jeder zeile in den dateien die ihr erstellt wo ich es auch gemacht habe damit es funktioniert)

/etc/ppp/ppp.linkdown
MYADDR:
! sh -c "/sbin/pfctl -d"
! sh -c "kill 'cat /var/run/pflogd.pid'"
! sh -c "/sbin/ifconfig pflog0 down"
! sh -c "/sbin/route delete default"

jetzt müsstet ihr eigentlich schon online gehen können mit:

/sbin/ifconfig euer interface zum dsl-modem up
/usr/sbin/ppp -ddial pppoe

und nun müsst ihr online sein;
jetzt nur noch ip-forwarding aktivieren, also auf 1 setzen und masquerading (nat) und die firewall
konfigurieren:

vi /etc/sysctl.conf

eintrag ändern auf:
net.inet.ip.forwarding=1

um es gleich zu ändern ohne zu booten:
sysctl -w net.inet.ip.forwarding=1

nun noch die nat.conf und pf.conf anpassen:

/etc/nat.conf

folgende zeile einfügen:
nat on tun0 from 192.168.1.0/24 to any - tun0

tun0 ist eure schnittstelle zum dsl-modem, tun0 wird die dynamische ip zugewiesen

so nun noch den paketfilter anpassen:

## Variablen ##

Ext = "tun0"
Int = "eure schnittstelle zum dsl-modem"
Loop = "lo0"
IntNet = "192.168.1.0/24"

# Adressen die auf dem externen Device nicht geroutet werden
NoRoute = "{ 127.0.0.1/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, 255.255.255.255/32 }"

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

## Regeln ##

# Fragmentierte Packete saeubern - rechenaufwendig
scrub in on { $Ext, $Int } all

# Generelle Block Regeln

block out on $Ext all
block in on $Ext all

block return-rst out log on $Ext proto tcp all
block return-rst in log on $Ext proto tcp all

block return-icmp out log on $Ext proto udp all
block return-icmp in log on $Ext proto udp all

# kein ipv6
block in quick inet6 all
block out quick inet6 all

# loopback darf alles
pass in quick on $Loop all
pass out quick on $Loop all

# 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 out log quick on $Ext inet from any to $NoRoute

# Ping akzeptieren
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

# HTTP nach aussen freigeben
pass in quick on $Ext inet proto tcp from any to any port 80

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

so nun noch die nat.conf und pf.conf aktivieren:

pfctl -R /etc/pf.conf -N /etc/nat.conf -e

wenn ihr änderungen an dem paketfilter macht könnt ihr es so wieder neu einlesen lassen:

pfctl -R /etc/pf.conf

fertig ist der dsl-router mit openbsd;
falls irgendwas nicht gehen sollte, ihr fragen habt (wobei ich jetzt auch nicht der bsd-gott bin
:-) oder ich einen fehler gemacht habe in diesem kleinen how-to mail mir:

moR-pH-euS@gmx.net

Kr1x
16.06.02, 10:05
mh, ne frage
geht der auch mit NetBsd ?


cu*Kr1x

[moR-pH-euS]
17.06.02, 22:44
für net-bsd weiss ich es leider nicht... ich habe zwar gerade auf www.netbsd.org nachgeschaut, aber nichts gefunden...
habe mich bis jetzt auch nur mit openbsd und freebsd beschäftigt und unter diesen unixen läuft es ohne probleme (wenn man den hohen konfigurationsaufwand in kauf nimmt... ;--)

mpphp
18.06.02, 11:06
hi [moR-pH-euS],

vielleicht solltest du noch erwähnen, dass man in der ppp.conf nach dem connection-name bzw. "default" in der darauffolgenden zeile ein leerzeichen machen muss.
also so: (der _ steht für leer)


pppoe:
_set device "!/usr/sbin/pppoe -i euer interface zum dsl-modem"
_disable acfcomp protocomp vjcomp deflate pred1
_deny acfcomp

gruß, mark

[moR-pH-euS]
19.06.02, 16:58
stimmt da hast du recht, das ist ziemlich wichtig; sonst gehts nämlich nicht... ;-) werde ich gleich mal editieren; danke