Titel: Inode(xdsl) und Freebsd.
===============================
Inhaltsverzeichnis:
-------------------
1.) Router konfigurieren.
2.) Mpd installieren.
3.) NETGRAPH einrichten.
4.) Konfiguration.
5.) Verbindung herrstellen.
6.) Routingtabelle modifizieren.
7.) Automatisierung.
8.) Fehlersuche.
9.) Sicherheit.
Ausgangslage:
-------------
.) Zyxel Prestige 645* (Alcatels speedtouch home(BCAC) funktioniert ebenfalls.)
.) Eine saubere FreeBsd 5.2.1 / 5.3beta4 installation.
(Andere Versionen wurden nicht getetstet.)
============================================================================
Legen wir los.
Arbeitsschritte:
----------------
1.) Router konfigurieren. (nur wenn resettet!...nicht selber resetten, ist verboten).
-------------------------
Sie sollten von Inode einen Router erhalten haben
welcher vorkonfiguriert und mit einem Passwort von inode versehen ist.
Wenn das der Fall sein sollte bitte zu Punkt 2.) gehen.
Ebenfalls zu 2.) können sie gehen wenn sie ein speedtouch verwenden.
Wenn sie ein resettetes "Zyxelding" haben
müssen sie es vielleicht erst wieder richtig Konfigurieren.
Eckdaten des Zyxel 645* nach einem Reset :
ip: 192.168.1.1
benutzername: admin
passwort: 1234
Aufbau einer Telnetverbindung zum Zyxel-Router(Bridge)
durch folgende Eingabe:
#telnet 192.168.1.1
Auf die Frage nach dem Passwort antworten wir mit "1234".
Es folgt eine Eingabemaske in derer wir die folgenden Punkte
zu unserem gunsten ändern(überprüfen).
Sollte Telnet auf denn Router nicht auf Anhieb
gehen bitte die Netzwerkkarte auf 192.168.1.2
mit der Netzwerkmaske 255.255.255.0 stellen.
Folgende Punkte überprüfen:
.)Menu 1 - General Setup
Route IP= No
Bridge= Yes
.)Menu 4 - Internet Access Setup
Encapsulation= RFC 1483
Multiplexing= LLC-based
VPI #= 8
VCI #= 35
.)Menu 11.1 - Remote Node Profile
Route= None
Bridge= Yes
(...alle Eingaben mit ENTER bestätigen bis man das jeweilige Menü verlässst)
Nach dem Reboot des Zyxel's ist es bereit sich zu syncronisieren.
2.) Mpd installieren.
---------------------
Das einfachste ist wohl folgender Weg mit Beginn and der root-console:
#cd /usr/ports/net/mpd
#make install
Da es aber vermutlich keine funktionierende Internetverbindung
auf dem zu "verbindendem Gerät" gibt, fällt dieser weg aus.
z.b folgendes wäre eine Alternative :
#cat /usr/ports/net/mpd/distinfo
Daraufhin ist in etwa sowas zu lesen:
MD5 (mpd/mpd-3.18.tar.gz) = ........
Diesen File sucht man sich aus dem Internet
und bringt in auf ein Datenmedium welches auch unter
Freebsd zu verfügung steht.
Die "mpd-*.tar.gz" wird im Normalfall
in folgendes Verzeichnis kopiert:
/usr/ports/distfiles/mpd/
Sollte das Verzeichnis nicht existieren, einfach ein:
#mkdir /usr/ports/distfiles/mpd
eingeben und erst dann kopieren.
...ein "make install" in /usr/ports/net/mpd sollte
für uns dann den Rest erledigen.
Ebensfalls möglich ist der Weg über Pakete.
3.) NETGRAPH einrichten.
------------------------
Der Mpd macht das eigentlich automatisch.
(Ausser dem System ist es verboten worden Kernelmodule nachzuladen.)
Man kann von hieraus auch gleich zu Punkt "4.)" gehen.
Man kann NETGRAPH als modul starten oder
auch in seinen Kernel mit aufnehmen.
Der weg über denn Kernel sieht ca. so aus:
In die Kernelconfig schreiben wir einfach
------>
options NETGRAPH
<------
hinein,übersetzen und installieren den neuen Kernel.
Man könnte auch alle weiteren NETGRAPH "node types"
in denn Kernel einbinden diese werden aber von einem
geladenen NETGRAPH subsystem automatisch mittels
kldload(8) nachgeladen.
Das sollte uns soweit reichen.
4.) Konfiguration:
------------------
.) Netzwerkarte.
zumindest das in die /etc/rc.conf schreiben.
------>
ifconfig_sis0="DHCP"
<------
sis0 ist durch denn Namen der verwendeten Netzwerkarte auszutauschen.
Inode macht die ip's über DHCP.
Macht normalerweise keine Probleme
solange der dhcp client geladen wird . (meist, automatisch.)
Beim starten des Computers wird angezeigt ob der dhcpclient gestartet wird.
Das ganze kann evtl. die Zeitdauer vom Einschalten bis zum Loginprompt
erhöhen.
.) Mpd konfigurieren :
Unter /usr/local/etc/mpd befinden sich die
*.sample Dateien des mpd (...falls es einmal zu Unklarheiten oder Erneuerungen kommt).
Insgesamt brauchen wir mindestens zwei korrekte
Konfigurationsdateien.
Eine....
/usr/local/etc/mpd/mpd.conf
und eine
/usr/local/etc/mpd/mpd.links.
Wir legen also eine eigene mpd.conf an:
mpd.conf:
------>
default:
load adslat
adslat:
new -i ng0 adslat adslat
log +auth +ccp +chat +fsm +lcp +link +phys +pptp +ipcp +iface
set iface disable on-demand
set iface idle 0
set iface route default
set iface addrs 192.168.1.1 192.168.2.2
set bundle disable multilink
set bundle authname dein_benutzername@inode
set bundle password dein_passwort
set link no acfcomp protocomp
set link no pap
set link disable chap
set link accept chap
set link keep-alive 10 75
set ipcp no vjcomp
open
<------
Benutzername und Passwort eintragen.
Die "log"-Zeile kann man, nachdem alles funktioniert getrost entfernen.
Die 192.168.1.1 und 192.168.2.2 sind Platzhalter
und werden durch den mpd automatisch richtiggestellt.
Unter sensiblen Umgebungen sollte in diesem Fall
zusätzlich die Datei mpd.secret für die verwahrung der
Benutzernamen und Passphrasen verwendet werden.
Wie das genau geht, steht in der mpd.secret.sample.
mpd.links:
------>
adslat:
set link type pptp
set pptp peer 10.0.0.138
set pptp enable originate outcall
<------
.) Namensauflösung:
-------------------
Im Normalfall wird kein gesonderter Eintrag der
DNS-Server benötigt.
Der DHCP-Server sollte uns die nötigen Informationen geschickt haben.
...sollte was nicht klappen.
/etc/resolv.conf:
------>
nameserver 195.58.160.2
nameserver 195.58.161.3
<------
Es ist ebenfalls möglich dem mpd peer mpd.conf eintrag
einen dns anzugeben.
mpd.conf eintrag: ----->set ipcp dns 195.58.160.2<------
5.) Verbindung herrstellen:
---------------------------
Mittels:
------>
#mpd adslat
<------
lässt sich der mpd starten, und dieser versucht sich dann bei der Gegenstelle zu
Authentifizieren.
Klappt alles ohne offensichtlicher Fehlermeldung ablaufen
kann man zu Punkt 6.) wechseln
Wenn man dem mpd die Option -b mitgibt bewirkt das, daß
der mpd die Konsole auf der er
gestartet wird, sofort wieder frei gibt.
6.) Routingtabelle modifizieren.
--------------------------------
Klingt jetzt komisch, ist aber nötig,
damit alles funktioniert.
Sagen wir unsere Netzwerkkarte in Richtung Internet
hat die 172.17.238.134 ("#ifconfig")
Dann ist unser Gateway die 172.17.238.1
Wir geben also folgendes ein:
------>
#/sbin/route add -host 10.0.0.138 172.17.238.1
#/sbin/route delete default
#/sbin/route add default -interface ng0
<------
Die 172.17.238.1 ist mehr oder minder dynamisch.
Das also jedesmal von Hand überprüfen ist umständlich.
Reicht uns allerdings für denn Test vollkommen.
Danach sollte einem ping ins Internet nichts mehr im Wege stehen.
Funktioniert alles können sie sich an die Automatisierung machen.
7:) Automatisierung.
--------------------
Man kann Punkt
5.) Verbindung herrstellen
und
6.) Routingtabelle modifizieren
zusammenfassen,
indem wir ein Startskript in in "/usr/local/etc/rc.d" erstellen.
.) Die Datei heißt z.b "inodeinet.sh"
und hat folgenden Inhalt:
------>
#!/bin/sh
case "$1" in
start)
echo
echo -n 'MPD wird gestartet.'
/usr/local/sbin/mpd -b adslat
#---jetzt wart ma ein bisschien damit nix schiefgeht.
sleep 5
echo -n .
sleep 5
echo -n .
sleep 5
echo -n .
sleep 5
echo .
#---das beste was mir einfiel.
echo ...die neuen routen werden erstellt.
ifconfig sis0 | grep "inet " | awk '{print $2}' | cut -d. -f1-3 > /tmp/setrout1
echo 1 > /tmp/setrout2
paste -d. /tmp/setrout1 /tmp/setrout2 > /tmp/yourgateway
set GW
GW="$(cat /tmp/yourgateway)"
export GW
#---das wichtigste.
/sbin/route add -host 10.0.0.138 $GW
/sbin/route delete default
/sbin/route add default -interface ng0
;;
stop)
echo "MPD wird beendet."
kill -9 `cat /var/run/mpd.pid`
;;
restart)
echo "Ein Restart wurde nicht vorgesehen."
;;
*)
echo "Verwendung: `basename $0` {start|stop}" >&2
exit 64
;;
esac
exit 0
<------
sis0 in der Zeile
---
ifconfig sis0 ........
---
ist abermals durch die Kennung ihrer Netzwerkkarte zu ersetzen.
Jetzt noch die Rechte an dem Skript neu setzen. (...ausführbar es nach dem Befehl dann ist.).
#chmod 755 /usr/local/etc/rc.d/inodeinet.sh
Und wir sind Fertig.
Jetzt noch rebooten und alles wird gut. (hoffentlich :))
(Die Startzeit erhöht sich durch dieses Skript um mindestens 20 Sekunden.)
.) Möchte man erst nach dem Login die Internetverbindung
herstellen, macht man sich ein Skript mit folgendem
Inhalt:
-------->
#!/bin/sh
echo
echo -n 'MPD wird gestartet.'
/usr/local/sbin/mpd -b adslat
#---jetzt wart ma ein bisschien damit nix schiefgeht.
sleep 5
echo -n .
sleep 5
echo -n .
sleep 5
echo -n .
sleep 5
echo .
#---das beste was mir einfiel.
echo ...die neuen routen werden erstellt.
ifconfig sis0 | grep "inet " | awk '{print $2}' | cut -d. -f1-3 > /tmp/setrout1
echo 1 > /tmp/setrout2
paste -d. /tmp/setrout1 /tmp/setrout2 > /tmp/yourgateway
set GW
GW="$(cat /tmp/yourgateway)"
export GW
#---das wichtigste.
/sbin/route add -host 10.0.0.138 $GW
/sbin/route delete default
/sbin/route add default -interface ng0
exit 0
<------
Ausführbar machen mit :
------>
#chmod 755 /pfad_zu_deinen_skripten/denk_dir_was_aus.sh
<------
und nach dem starten des Programms sollte wiedermal alles passen
und unser Internet funktionieren.
8.)Fehlersuche.
Schiefgehen kann eine Menge, darum hier ein paar Mechanismen
die die Fehlersuche erleichtern können.
.) [/url=http://www.bretterklieber.com/mpd/doc3/mpd47.html#47]>mpd-Troubleshooting<[/url]
.) Ein
------>
#ifconfig
<------
nach dem Reboot sollte uns eine mit einer IP-Adresse versehene
Netzwerkarte zeigen.
Das sieht dann ca. so aus:
------>
sis0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet6 fe80::240:f4ff:fe1a:6b97%sis0 prefixlen 64 scopeid 0x1
inet 172.17.238.148 netmask 0xffffff00 broadcast 172.17.238.255
ether 00:40:f4:1a:6b:97
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
<------
Sollte schon hier ein Fehler auftreten, bitte die Physikalische unversehrtheit
und die Funktion der gegebenen Kabel,Stecker und Geräte überprüfen.
Weiters wäre darauf zu achten das der DHCP-client beim start
seine Arbeit versieht.
.) Die Ausgabe des mpd ist natürlich ebenfalls zu überprüfen.
Der Meldet sich eh wenn wo irgend was, irgend wie nicht passt.
.) Ein
------>
#kldstat | grep ng_
<------
sollte in etwa das anzeigen.
Hier geht es nur darum das die ng Sachen
geladen sind.
---
4 1 0xc313f000 4000 ng_socket.ko
6 1 0xc3159000 4000 ng_iface.ko
7 1 0xc315d000 8000 ng_ppp.ko
8 1 0xc3165000 4000 ng_bpf.ko
9 1 0xc316b000 5000 ng_vjc.ko
10 1 0xc3180000 5000 ng_pptpgre.ko
11 1 0xc3186000 5000 ng_ksocket.ko
---
.) weiters sind die Ausgaben von
#netstat -in
und
#netstat -rn
interresant, dort findet man dann
die Fehler wegen Routing und so.
.)Im Zeifelsfall alle Angaben in dieser Anleitung
in Frage stellen und eigene Recherchen anstellen.
(mpd-html docu,manpages,Handbücher und was es sonst noch so gibt.)
[url=http://www.bretterklieber.com/mpd/doc3/mpd.html]> mpd-onlinedokumentation <[/url]
9.) Sicherheit.
Diese Anleitung verzichtet soweit vollkommen auf den Einbau
von für die Sicherheit relevanten Schichten, weil es hier
vor allem darum geht, Internet auf seine Büchse zu bekommen
und sich nicht in diversen Sicherheitseinstellungen zu verlieren.
Allgemein kann man sagen das sie die Berechtigungen an denn Dateien
auf ein Mindestmass herunterschrauben müssen,
zusätzlich die mpd.secret verwenden sollten
und sich in Zukunft einen Paketfilter einbauen sollten.
Weiters ist das "bpf-device" aktiviert welches unter Umständen
auch von "bösen" Snifferprogrammen missbräuchlich verwendet werden könnte.
Das ist aber in dem Fall das sie dem System die Möglichkeit geben Module
nachzuladen hinfällig da ein Angreifer
"bpf" oder ein anders Kernelmodul seiner Wahl sowieso nachladen könnte,
sollte das System ernsthaft kompromitiert seien.
10.) Danksagung.
Danke an alle deren Ideen und Wissen ich entwendet habe und in dieses How-to
mit einfliesen hab lassen.