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
Lesezeichen