Im Gegensatz zum Desktop ist Linux im Serverbereich fest etabliert. Das gilt für Webserver und große Rechenzentren ebenso wie für kleine Hardware-Router vom Discounter. Das hat einige gute Gründe:
Als Basissystem habe ich Fedora Core 2 installiert. Natürlich geht das beschriebene auch mit jeder anderen Linux-Distribution, ich kenne mich halt mit Fedora am besten aus.
Ganz unten habe ich meine Versionen der hier besprochenen Konfigurationsdateien zum herunterladenHat man alle iso-Images heruntergeladen und mittels der md5-Summe deren Integrität überprüft, so kann man die Images auf CD brennen und mit der Installation beginnen. Es gibt auch Alternativen (fast) ohne CD brennen, vielleicht stelle ich die weiter unten noch vor. Die Installation von Fedora startet von CD1 wenn der Router sowas kann. Jeden Schritt möchte ich hier nicht besprechen, nur auf wichtige Punkte aufmerksam machen:
Ist die Installation durchgelaufen, könnte man den Rechner theoretisch schon in den Keller, Kleiderschrank oder wohin auch immer verbannen.
Das sollte man erstmal noch seinlassen, denn wenn durch eine Konfigurationspanne das Netzwerksystem ausfällt, muss man wieder Monitor und
Tastatur zücken. Als ersten Schritt sollte man die Dienste abschalten, die man nicht braucht. Dazu gibt
es den Befehl chkconfig. chkconfig Dienst on schaltet einen Dienst an, chkconfig Dienst off schaltet ihn ab.
chkconfig --list zeigt eine Liste aller verfügbaren Dienste und deren Status an.
Ausschalten kann man: kudzu, anacron, nscd, acpid, irqbalance, isdn, autofs und yum
Dann steht erstmal ein Update des Systems an. Dazu richtet man wie weiter unten beschrieben zunächst die Internetverbindung ein und gibt dann yum update ein.
Dann installiert man in einem Rutsch alle Pakete die man später noch braucht und die in Fedora enthalten sind mit
yum install dhcp samba dovecot fetchmail perl-libwww-perl fontconfig gcc patch bison flex postgresql-libs openssl-devel
Neu starten um den neuen Kernel in Betrieb zu nehmen.
Als nächtes sollte man die Netzwerkkarten ans Laufen bringen. Wurde eine Netzwerkkarte nicht erkannt, so sind folgende Schritte durchzuführen:
modprobe modul laden und dann einen Blick in /var/log/messages werfen. Gibts dort Fehlermeldungen oder wurde die Karte gefunden? Evtl. werden Parameter wie irq= o.ä. gebraucht.
alias eth1 3c509 (für mein Beispiel)
# 3Com 3C509B EtherLink III:Unknown DEVICE=eth1 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.128.1 NETMASK=255.255.255.0
/etc/modprobe.conf sollte jetzt stehen:
alias eth0 via-rhine alias eth1 3c509 alias eth2 orinoco_pciund in /etc/sysconfig/network-scripts sollten dazu passende ifcfg-eth0 bis ifcfg-eth2 stehen.
service network restart sollte die neue Karte bei ifconfig angezeigt werden. Notfalls neustarten.
Jetzt wird es Zeit, den Router ins Internet zu bringen. Dazu schließt man zunächst das DSL-Modem an die dafür
vorgesehene LAN-Karte an (bei mir eth1, also die 3COM) und testet mit pppoe -I eth1 -A ob man eine Verbindung
zum Access-Concentrator erhält. Wenn nicht, dann ist entweder die Netzwerkkarte kaputt, nicht richtig eingerichtet oder
das Zusammenspiel Modem <-> Netzwerkkarte funktioniert nicht (bei mir manchmal der Fall). Dann einfach mal eine andere Netzwerkkarte
probieren. Funktioniert hingegen alles, gilt es pppd zu konfigurieren. Dazu legt man die Datei /etc/ppp/peers/dsl mit folgendem Inhalt an:
pty "pppoe -m 1452 -I eth1" connect /bin/true user "benutzername" usepeerdns noipdefault defaultroute noccp
Dass Passwort kommt in die /etc/ppp/chap-secrets:
"benutzername" * "kennwort"
Nach Eingabe von pppd call dsl sollte ein ping 217.72.195.42 (web.de) eine funktionierende Verbindung signalisieren.
Jetzt wollen wir eine funktionierende Namensauflösung, damit wir nicht mit IP-Adressen hantieren müssen. Dazu schauen wir mit
cat /etc/ppp/resolv.conf, ob dort etwas eingetragen ist. Das ist nicht immer der Fall. Wenn nicht, müssen wir uns mit
cat /var/log/messages | grep "DNS address" die Adresse des DNS-Servers selbst raussuchen. Dann schreiben wir in
/etc/resolv.dnsmasq: nameserver aaa.bbb.ccc.ddd also die gerade herausgefundene DNS-Serveradresse. Nun installieren wir mit
rpm -i dnsmasq-... unseren eigenen DNS-Server. Konfiguriert wird er in /etc/dnsmasq.conf:
listen-address=192.168.1.8 listen-address=127.0.0.1 resolv-file=/etc/resolv.dnsmasq
Mit dnsmasq wird er gestartet. Anschließend schreiben wir in /etc/resolv.conf:
nameserver 127.0.0.1 domain irgendwas.lan search hostname
hostname ist der im Abschnitt "Installation" festgelegte Hostname. Jetzt sollte auch ein ping web.de zum Erfolg führen.
Weiter gehts mit dem Routing. Das lässt sich alles mit diesem Skript erschlagen. Man kopiert es
z.B. ins /root Verzeichnis und macht es mit chmod 700 masq ausführbar. Bitte jetzt in den oberen Zeilen ggf.
die Parameter anpassen. Nach einem Aufruf von /root/masq, der fehlerfrei durchlaufen sollte, ist das Routing
erstmal eingerichtet. Das Skript habe ich übrigens vor Jahren von einer mir nun unbekannten Internetseite geklaut,
der Autor möge sich melden, wenn es ihn stört.
Um die Internetverbindung stets aufrecht zu erhalten, kommt folgende Zeile in die /etc/inittab:
ppp:3:respawn:/usr/sbin/pppd call dsl nodetach
nach einem telinit Q tritt diese Zeile in Aktion. Falls der pppd noch läuft, bitte vor telinit mit killall pppd beenden.
rpm -i http://dl.atrpms.net/.../fcpci-kmdl....
In die /etc/capi.conf muss die Zeile fcpci - 1 - - geschrieben werden. Jetzt brauchen wir noch das aktuelle capiinit da das mitgelieferte mit den 2.6er Kernelmodulen nicht zurecht kommt...
cd /usr/src wget ftp://ftp.in-berlin.de/pub/capi4linux/capi4k-utils-2005-07-18.tar.gz tar xzf capi4k-utils-2005-07-18.tar.gz cd capi4k-utils/capi20 ./configure && make && make install cd ../capiinit ./configure && make && make install cd ../capiinfo ./configure && make && make installDann mit
capiinit start das CAPI laden, was mit einer Warnung abgehen sollte. Mit capiinfo kann man dann überprüfen, ob capi geladen wurde.
Sonst gibt es an Hardware eigentlich nichts aufregendes, die HFC-Karte wird später mit bristuff in Betrieb genommen
Damit man nicht IP-Adresse, Gateway, Nameserver usw. bei jedem Client einzeln eintragen muss, kann man dies den dhcp-Server von zentraler Stelle aus erledigen lassen. Zu beachten ist hierbei, dass eine WLAN-Karte gleich alle Parameter mitgeteilt bekommt, die Dienste aber erst nutzen kann, wenn eine VPN-Verbindung besteht. Einzig der Gateway wird erst zugewiesen, wenn die VPN-Verbindung steht. Weiterhin kann man sehen, dass der Computer mit der MAC-Adresse 00:0E:A6:36:35:46 immer die IP-Adresse 192.168.1.1 zugewiesen bekommt. Das tut not, damit das Routing-Skript z.B. die ICQ-Pakete auch an den richtigen Rechner leiten kann. Die Konfiguration des dhcp-Servers geschieht über die Datei /etc/dhcpd.conf:
authoritative;
ddns-update-style none;
option domain-name "wg.lan";
max-lease-time 86400;
default-lease-time 86400;
option subnet-mask 255.255.255.0;
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.20 192.168.2.40;
option domain-name-servers 192.168.1.8;
option netbios-name-servers 192.168.1.8;
}
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.20 192.168.1.40;
option domain-name-servers 192.168.1.8;
option netbios-name-servers 192.168.1.8;
option routers 192.168.1.8;
}
host johannes {
hardware ethernet 00:0E:A6:36:35:46;
fixed-address 192.168.1.1;
}
Bitte alle hier beispielhaft eingetragenen MAC/IP-Adressen entsprechend anpassen. Jetzt noch mit service dhcpd start den Server starten.ipconfig /all
überprüfen, ob die Werte des dhcp-Servers übernommen wurden. Wenn ja, sollte auch die Internetverbindung ohne weiteres
funktionieren - einfach mal surfen.
Nachdem bis hierhin alles funktioniert hat, kommen wir zum Mail-Server. Wir wollen also mit einem POP3-Client unsere E-Mails z.B. von einem (oder mehreren) GMX-Accounts einsammeln und auf dem Server lagern. Dort werden sie dann über IMAP bereitgestellt. Der Vorteil dieses Vorgehens ist, dass die eigenem Mails an einem zentralen Punkt gespeichert sind und man so vom Heimrechner, vom Laptop und vom Rechner auf der Arbeit immer auf alle seine Mails zugreifen kann. Auch alle gesendeten Nachrichten werden zentral gespeichert.
Fangen wir mit dem IMAP-Server an, konfiguriert werden muss er ausnahmsweise nicht, nur aktivieren muss man ihn mit service dovecot start. Diesen Teil sollte man schonmal testen. Dazu
richtet man sich mit adduser test einen Testbenutzer ein und weist ihm mit passwd test ein Passwort zu.
Anschließend sendet man sich mit echo Hallo | mail test@localhost -s test selbst eine E-Mail.
Dann richtet man auf einem Client ein imap-Konto ein und prüft ob die Testmail durchgekommen ist.
Wenn das funktioniert, muss noch fetchmail eingerichtet werden. Ich habe es für jeden Benutzer getrennt laufen damit es zu keiner Verwirrung kommt und etwas Diskretion gewährleistet ist. Man schreibt also (angemeldet als Benutzer test) in /home/test/.fetchmailrc:
server pop.puretec.de proto pop3 user benutzer pass geheim
Damit die Email-Passwörter nicht unverschüsselt auf der Platte liegen, verschlüsselt man die Konfigurationsdatei.
Verschlüsselt wird z.B. mit aespipe. Die Installation geschieht mittels rpm -i ftp://ftp.pbone.net/.../aespipe-....rpm (URL s.o.)
Hat man es installiert, meldet man sich als Benutzer test beim System an und verschlüsselt die
Konfigurationsdatei mit
aespipe < .fetchmailrc > .fetchmailrc.aes && rm -f .fetchmailrc
Fetchmail ist nun mit dem folgenden Skript zu starten:
#!/bin/sh [ -f ~/.fetchmailrc.aes ] && aespipe -d < ~/.fetchmailrc.aes | \ grep -a "user\|pass\|server\|proto" | fetchmail --daemon=300 -f -
Der grep-Aufruf filtert einige Zeichen aus, die komischerweise beim entschlüsseln hinten angehängt werden.
Da die WEP-Verschlüsselung schnell geknackt und bei einigen Windows-Treibern fehlerhaft implementiert ist, habe ich mich entschieden, den WLAN-Verkehr über einen verschlüsselten VPN-Tunnel zu leiten. Diesen Tunnel kann man doch auch gleich noch durchs Internet bauen und so von überall auf das heimische Netz zugreifen. Die WLAN-Karte konfiguriert man in /etc/sysconfig/network-scripts/ifcfg-eth2:
# Belkin: 802.11b Prism 2.5 Wireless network adapter DEVICE=eth2 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.2.1 NETMASK=255.255.255.0 ESSID=wlan CHANNEL=6 MODE=Ad-Hoc RATE=auto
Ein service network restart übernimmt die Änderungen. Auf dem Client nimmt man die gleichen
Einstellungen vor, insbesondere Channel, ESSID und MODE müssen übereinstimmen. Den Rest übernimmt dhcp.
Das sollte man auch gleich überprüfen. Wichtig: mit dem oben vorgestellten Firewall-Skript lässt sich
die WLAN-Verbindung nicht über Ping testen!
Jetzt installieren wir die Software: (Alles in eine Zeile, URLs ggf. anpassen)
rpm -i http://mesh.dl.sourceforge.net/sourceforge/poptop/dkms-2.0.6-1.noarch.rpm http://mesh.dl.sourceforge.net/sourceforge/poptop/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm http://mesh.dl.sourceforge.net/sourceforge/poptop/ppp-2.4.3-5.fc2.i386.rpm http://mesh.dl.sourceforge.net/sourceforge/poptop/pptpd-1.2.3-1.i386.rpm
Dann wird der Server konfiguriert, /etc/ppp/options.pptpd:
lock mtu 1450 mru 1450 auth ipcp-accept-local ipcp-accept-remote lcp-echo-failure 3 lcp-echo-interval 5 nodeflate nobsdcomp debug name pptpd proxyarp require-mppe require-mschap-v2sowie /etc/pptpd.conf:
option /etc/ppp/options.pptpd localip 192.168.1.200 remoteip 192.168.1.201-230Und die Zugangsdaten müssen noch festgelegt werden, /etc/ppp/chap-secrets:
"test" pptpd "/$%hf1ap21" 192.168.1.5test ist der Benutzername, pptpd ist das was oben hinter name= steht, dann kommt das Passwort, welches besonders verworren sein sollte, da die Qualität der Verschlüsselung von ihm abhängt. Dann kommt die IP-Adresse, die diesem Client zugewiesen werden soll. Ist das egal, dann kommt an diese Stelle einfach ein *. Dann wird eine Adresse aus dem oben mit remoteip= definierten Bereich zugewiesen.
Die Konfiguration eines Windows Clients geht wie folgt:
ln -s /lib/modules/`uname -r`/build linux einen Link zu den Kernelsourcen erstellen
tar xzf ...tar.gz auspacken
zcat ../../zaphfc...florz.diff.gz | patch -p1 den Patch anwenden
./install die Installation starten. Diese benötigt Kernelquellen sowie gcc.
patch -p1 eingeben und folgendes in die Konsole pasten:
diff -ur chan_capi-0.3.5.orig/chan_capi.c chan_capi-0.3.5.new/chan_capi.c --- chan_capi-0.3.5.orig/chan_capi.c 2004-08-13 12:07:28.000000000 +0200 +++ chan_capi-0.3.5.new/chan_capi.c 2005-05-14 15:47:36.164052000 +0200 @@ -687,7 +687,7 @@ p = malloc(sizeof(struct capi_pipe)); memset(p, 0, sizeof(struct capi_pipe)); p->fd = fds[1]; - c->fds[0] = fds[1]; + c->fds[0] = fds[0]; p->PLCI = -1; p->i = i; p->c = c;Eingabe mit Strg+D abschließen
make && make install installieren.
loadzone=nl defaultzone=nl span=1,1,3,ccs,ami bchan=1-2 dchan=3und hinzuzufügen zur /etc/modprobe.conf:
alias char-major-196 zaphfc options zaphfc modes=1 install zaphfc /sbin/modprobe --ignore-install zaphfc && /sbin/ztcfgEinbinden in asterisk, /etc/asterisk/zapata.conf:
[channels] switchtype=euroisdn signalling=bri_net_ptmp pridialplan=local echocancel=yes immediate=no overlapdial=yes group=1 context=default channel=>1-2Jetzt konfigurieren wird VOIP bzw. SIP, /etc/asterisk/sip.conf:
[general] port=5060 context=sip-in bindaddr=0.0.0.0 disallow=all allow=g729 allow=alaw allow=ulaw allow=gsm maxexpirey=180 defaultexpirey=160 tos=lowdelay register => 49681987654:passwort@sip.gmx.net/49681987654 [johannes-gmx] host=sip.gmx.net type=friend username=49681987654 secret=passwort fromuser=49681987654 fromdomain=sip.gmx.net canreinvite=no qualify=no
wget http://mesh.dl.sourceforge.net/sourceforge/ddclient/ddclient-3.6.7.tar.bz2 tar xjf ddclient-3.6.7.tar.bz2 cd ddclient-3.6.7 cp ddclient /usr/sbin cat sample-etc_ppp_ip-up.local >> /etc/ppp/ip-up.local chmod +x /etc/ppp/ip-up.localIn die /etc/ddclient/ddclient.conf muss folgendes hinein:
login=user password=passwort server=members.dyndns.org, \ protocol=dyndns2 \ blabla.dyndns.orgEin
killall pppd testet das ganze, das Ergebnis lässt sich wie immer in /var/log/messages begutachten.