Home Router Guide
1.
Einleitung
Einen eigenen Router aus alten Ersatzteilen zu bauen, hat viele Vorteile
gegenüber dem Kauf einer vorgefertigten Lösung von z.B. Linksys. Der weitaus
größte ist die Kontrolle über die Verbindung. Alle anderen bleiben der
eigenen Vorstellungskraft überlassen; beinahe alles kann in diesem Szenario
getan werden, die Frage ist nur, ob man es braucht.
In dieser Anleitung wird erklärt, wie man auf dem Router NAT (Network Address
Translation) installiert (Kernel und iptables), wie gebräuchliche Dienste
hinzugefügt und konfiguriert werden (Domain Name System (DNS) mit dnsmasq, dhcp
mit dhcpcd, ADSL über ppp) und schließt mit ausgefeilteren und teilweise
lustigen Dingen, die gemacht werden können (Portweiterleitung, traffic shaping,
Proxies/Caching, usw.).
Bevor es los geht, müssen ein paar Mindestanforderungen erfüllt sein.
Zuerst brauchen Sie einen Computer, in dem mindestens zwei Netzwerkkarten
eingebaut sind. Als nächstes werden die Einwahl- und Konfigurationsdaten
für die jeweilige Internetverbindung benötigt (dazu gehören Dinge wie
IP/DNS/Gateway/Benutzername/Passwort). Abschließend sind ein bisschen Freizeit
und eine Schwäche für Gentoo nötig.
Die in dieser Anleitung gebrauchten Abkürzungen/Konventionen sind:
-
eth0 - NIC (Network Interface Card) verbunden mit dem lokalen
Netzwerk (LAN)
- eth1 - NIC verbunden mit dem Internet (WAN)
- Das LAN benutzt das private 192.168.0.xxx Netzwerk
- Der Router ist fest auf die IP 192.168.0.1 konfiguriert
-
Der Router läuft unter Linux 2.4 oder 2.6; mit 2.0/2.2 sind Sie auf
sich gestellt
Wichtig:
Zur Sicherheit empfehle ich, alle ungenutzten Dienste auf dem Router zu
stoppen, bevor die Firewall konfiguriert ist und läuft. Um die aktuell
laufenden Dienste anzuzeigen, tippen Sie rc-status in ein
Konsolenfenster.
|
2.
Kernel-Konfiguration (kenne dich selbst zuerst)
Ihr Kernel muss über Treiber für beide NICs verfügen und diese auch verwenden.
Um festzustellen, ob die Karten bereits fertig konfiguriert sind, starten Sie
ifconfig. Die Ausgabe bei Ihnen mag leicht vom Folgenden abweichen, das
ist in Ordnung. Wichtig ist, dass die Karten überhaupt angezeigt werden.
Befehlsauflistung 2.1: Testen der NICs |
# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:60:F5:07:07:B8
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:11 Base address:0x9800
eth1 Link encap:Ethernet HWaddr 00:60:F5:07:07:B9
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:10 Base address:0x9400
|
Wenn Sie Ihre beiden Karten nicht angezeigt bekommen und Sie nicht sicher sind,
welche Art von Karte Sie haben, versuchen Sie es mit
lspci | grep Ethernet. Dieses Tool bekommen Sie durch
emerge pciutils. Sowie Sie diese Information haben, sollten Sie in Ihren
Kernel gehen und Unterstützung für den passenden Treiber hinzufügen.
Als nächstes brauchen Sie Unterstützung für iptables und NAT (und, wenn
gewünscht, Packet-Shaping). Die nachfolgende Liste ist unterteilt in unbedingt
benötigte (*), nur für adsl via PPPoE benötigte (a), für jeden Nutzer
empfohlene (x) und nur zum Shaping (s) benötigte Fähigkeiten. Es macht keinen
Unterschied, ob diese Eigenschaften fest in den Kernel oder als Modul
kompiliert werden, solange zur richtigen Zeit die notwendigen Module geladen
werden (das Laden von Modulen sei jedoch dem Leser als nette Übung überlassen).
Befehlsauflistung 2.2: Netzwerkoptionen |
Networking options --->
[*] TCP/IP networking
[*] IP: advanced router
[*] Network packet filtering (replaces ipchains)
[*] Socket Filtering
IP: Netfilter Configuration --->
[*] Connection tracking (required for masq/NAT)
[x] FTP protocol support
[x] IRC protocol support
[*] IP tables support (required for filtering/masq/NAT)
[*] IP range match support
[x] MAC address match support
[*] Multiple port match support
[*] Packet filtering
[*] REJECT target support
[x] REDIRECT target support
[*] Full NAT
[*] MASQUERADE target support
[s] Packet mangling
[s] MARK target support
[x] LOG target support
QoS and/or fair queueing --->
[s] QoS and/or fair queueing
[s] HTB packet scheduler
[s] Ingress Qdisc
[a] PPP (point-to-point protocol) support
[a] PPP filtering
[a] PPP support for async serial ports
[a] PPP support for sync tty ports
[a] PPP Deflate compression
[a] PPP BSD-Compress compression
[a] PPP over Ethernet
|
Notiz:
Manches in einem 2.6er Kernel mag sich leicht von einem 2.4er unterscheiden,
allerdings sollte es Ihnen möglich sein, die Unterschiede herauszufinden :).
Sogar innerhalb der 2.6er Kernel haben diese Optionen die Tendenz, ihren
Platz zu verändern. Viel Glück!
|
3.
Umarmen Sie das WAN (alias Internet)
Einführung
Es gibt viele Wege, sich ins Internet zu verbinden. Daher decke ich hier
lediglich die ab, mit denen ich mich auskenne, und zwar ADSL (PPPoE) und
Kabelmodems (statisch/dynamisch). Wenn es andere Methoden gibt, fühlen Sie sich
ermuntert, eine kleine Anleitung zu schreiben und Sie mir via E-Mail zukommen
zu lassen. Nicht auf Ihre Umgebung zutreffende Abschnitte in diesem Kapitel
können Sie selbstverständlich überspringen. Dieses Kapitel behandelt lediglich
die Verbindung des Routers mit dem Internet über eth1.
ADSL und PPPoE
Die gesamte Software, die bislang von rp-pppoe
(Roaring Penguin)
bereitgestellt wurde, ist jetzt in das
Standard-PPP-Paket integriert worden. Mit einem einfachen
emerge ppp sind Sie auf dem richtigen Weg. Erinnern Sie sich, wie ich
sagte, dass Sie einen Benutzernamen und ein Passwort brauchen? Nun, ich
habe nicht gelogen, daher hoffe ich, dass Sie beides jetzt vorliegen haben!
Öffnen Sie /etc/conf.d/net in Ihrem bevorzugten Editor und
konfigurieren Sie die Datei.
Notiz:
Damit die folgenden Netzwerkeinstellungen funktionieren, müssen Sie
baselayout-1.12.9 oder neuer auf Ihrem System installiert haben.
|
Befehlsauflistung 3.1: Konfiguration von eth1 |
# nano /etc/conf.d/net
config_ppp0=( "ppp" )
link_ppp0="eth1"
plugins_ppp0=( "pppoe" )
pppd_ppp0=(
"defaultroute"
"usepeerdns"
)
username_ppp0="vla9h924"
password_ppp0="boogie"
# ln -s net.lo /etc/init.d/net.ppp0
# rc-update add net.ppp0 default
# /etc/init.d/net.ppp0 start
|
Warnung:
Wenn das DSL-Interface gestartet wird, erstellt es ppp0. Obwohl Ihre NIC eth1
genannt wird, ist die IP tatsächlich an ppp0 gebunden. Wenn Sie von jetzt an
ein Beispiel sehen, das 'eth1' nutzt, ersetzen Sie es gedanklich durch 'ppp0'.
|
Warnung:
Stellen Sie sicher, dass die Berechtigungen der Datei /etc/conf.d/net so
gesetzt sind, dass sie nur von root gelesen bzw. geschrieben werden kann,
weil Sie Ihren Benutzernamen und Ihr Passwort dort abgelegt haben.
|
Warnung:
Allen, die vom rp-pppoe-Paket wechseln oder kuriose Verbindungsabbrüche
erleben, sei der Abschnitt bezüglich MTU im Kapitel Problembehebung ans Herz
gelegt.
|
Kabel und/oder dynamische/statische IP
Wenn Sie eine statische IP nutzen, brauchen Sie ein paar Details mehr als bei
einer dynamischen. Für Nutzer von statischen IPs werden sowohl die eigene IP
als auch die des Gateways und die DNS-Server benötigt.
Befehlsauflistung 3.2: Konfiguration von eth1 |
# emerge dhcpcd
# nano /etc/conf.d/net
config_eth1=( "dhcp" )
# nano /etc/conf.d/net
config_eth1=( "66.92.78.102 broadcast 66.92.78.255 netmask 255.255.255.0" )
routes_eth1=( "default gw 66.92.78.1" )
# nano /etc/resolv.conf
nameserver 123.123.123.123
# ln -s net.lo /etc/init.d/net.eth1
# rc-update add net.eth1 default
# /etc/init.d/net.eth1 start
|
Jetzt sollte alles bereit sein, damit Sie sich ins Internet verbinden können.
4.
Umarmen Sie das LAN (bringen Sie ein paar Freunde mit)
Dieser Schritt ist ein Kinderspiel im Vergleich zum vorherigen.
Befehlsauflistung 4.1: Konfiguration von eth0 |
# nano /etc/conf.d/net
config_eth0=( "192.168.0.1 broadcast 192.168.0.255 netmask 255.255.255.0" )
# rc-update add net.eth0 default
# /etc/init.d/net.eth0 start
|
5.
LAN Dienste (denn wir sind freundliche Menschen)
DHCP-Server
Ich wette, es wäre schön, wenn alle anderen in Ihrem Haus lediglich ihre
Computer ans Netzwerk anschließen müssten und alles einfach liefe. Nicht nötig,
sich komplizierte Details zu merken oder sie vor verwirrende
Konfigurationsbildschirme zu setzen! Das Leben wäre großartig, hm? Es folgt
eine Einführung in das Dynamic Host Configuration Protocol (DHCP)
und warum Sie es interessieren sollte.
DHCP ist genau das, was sein Name vermuten lässt. Es ist ein Protokoll, mit dem
man andere Computer dynamisch und automatisch konfigurieren kann. Sie starten
einen DHCP-Server auf dem Router, geben ihm alle notwendigen Informationen über
Ihr Netzwerk (erlaubte IPs, DNS-Server, Gateways, usw.), und wenn die anderen
Computer hochfahren, starten diese einen DHCP-Client, der sie automatisch
konfiguriert. Kein Brimborium, kein Durcheinander! Um mehr über DHCP zu
erfahren, können Sie bei Wikipedia vorbeischauen.
Wir benutzen ein Paket namens dnsmasq, das uns sowohl mit DHCP- als auch
DNS-Diensten versorgt. Fürs Erste beschäftigen wir uns aber nur mit DHCP.
Beachten Sie, dass Sie im Kapitel Spielereien ein weiteres Beispiel
finden, falls Sie einen anderen DHCP-Server verwenden wollen. Wenn Sie ein
wenig an den Einstellungen des DHCP-Servers basteln möchten, lesen Sie die
Kommentare in /etc/dnsmaq.conf. Eigentlich sollten aber die
Standardeinstellungen prima funktionieren.
Befehlsauflistung 5.1: Einrichten eines DHCP Servers |
# emerge dnsmasq
# nano /etc/dnsmasq.conf
dhcp-range=192.168.0.100,192.168.0.250,72h
interface=eth0
# rc-update add dnsmasq default
# /etc/init.d/dnsmasq start
|
Jetzt ist Ihr kleiner Router ein echter DHCP-Server! Schließen Sie die Computer
an Ihr Netzwerk an und sehen Sie zu, wie sie funktionieren! Bei
Windows-Systemen sollten Sie in den Netzwerkeinstellungen für TCP/IP die
Optionen "IP-Adresse automatisch beziehen" und "DNS-Server-Adresse automatisch
beziehen" aktivieren. Manchmal werden die Änderungen nicht sofort übernommen,
dann können Sie eine CMD-Box öffnen und ipconfig /release gefolgt von
ipconfig /renew eingeben. Doch genug von Windows, lassen Sie uns zurück
zu unserem Lieblingspinguin kommen.
DNS-Server
Wenn Leute einen Ort im Internet besuchen wollen, merken sie sich Namen, keine
langen Bandwürmer aus Zahlen. Denn was ist einfacher zu merken, ebay.com
oder 66.135.192.87? Hier kommt das DNS ins Spiel. DNS-Server laufen überall im
Internet und wann immer jemand 'ebay.com' besuchen möchte, übersetzen diese
Server 'ebay.com' (was wir verstehen) in '66.135.192.87' (was unsere Computer
verstehen). Für mehr Informationen über das DNS können Sie jederzeit
Wikipedia besuchen.
Da wir bereits dnsmasq als DHCP-Server benutzen und dieses Paket auch einen
DNS-Server beinhaltet, müssen Sie hier nichts mehr machen! Ihr kleiner Router
stellt den DHCP-Clients bereits DNS zur Verfügung. Ich wette, Sie wünschten,
dass alles so einfach wäre ;).
Selbstverständlich können Sie einen anderen DNS-Server wählen, mit dem Sie
besser vertraut sind; dnsmasq ist jedoch sehr gut, da es genau für das
kreiert wurde, was wir wollen und nicht mehr. Es ist ein kleiner DNS
Zwischenspeicher-/Weiterleitungsserver für lokale Netzwerke. Wir wollen hier
kein DNS für unsere eigene Domäne offerieren, sondern nur ein einfaches DNS für
alle anderen in unserem LAN.
NAT (alias IP-masquerading)
An diesem Punkt angelangt, können Leute in Ihrem Netzwerk miteinander sprechen
und über den DNS-Server auch Hostnamen nachschauen. Dennoch ist noch immer
keine Verbindung ins Internet möglich. Während Sie möglicherweise glauben, dass
das großartig ist (mehr Bandbreite für Sie!), wette ich, dass alle anderen
nicht allzu froh darüber sind.
An dieser Stelle kommt NAT ins Spiel. NAT ist eine Möglichkeit, um mehrere
Computer in einem privaten LAN mit dem Internet zu verbinden, wenn nur eine
kleinere Anzahl an IP-Adressen zur Verfügung steht. Normalerweise bekommen Sie
von Ihrem ISP (Internet Service Provider) genau eine IP zugewiesen, dennoch
möchten Sie das ganz Haus mit dem Internet verbinden. NAT ist die Zauberei,
die dies möglich macht. Für mehr Informationen über NAT können Sie bei
Wikipedia vorbeischauen.
Notiz:
Bevor wir starten, überprüfen Sie bitte, ob Sie iptables auf Ihrem System
installiert haben. Obgleich es normalerweise automatisch auf den meisten
Systemen installiert wird, könnte es bei Ihnen nicht dabei sein. Wenn das der
Fall ist, führen Sie einfach emerge iptables aus.
|
Befehlsauflistung 5.2: Konfiguration von iptables |
# iptables -F
# iptables -t nat -F
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD DROP
# export LAN=eth0
# export WAN=eth1
# iptables -I INPUT 1 -i ${LAN} -j ACCEPT
# iptables -I INPUT 1 -i lo -j ACCEPT
# iptables -A INPUT -p UDP --dport bootps ! -i ${LAN} -j REJECT
# iptables -A INPUT -p UDP --dport domain ! -i ${LAN} -j REJECT
# iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
# iptables -A INPUT -p TCP ! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP
# iptables -A INPUT -p UDP ! -i ${LAN} -d 0/0 --dport 0:1023 -j DROP
# iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j DROP
# iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
# echo 1 > /proc/sys/net/ipv4/ip_forward
# for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
# /etc/init.d/iptables save
# rc-update add iptables default
# nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.ip_dynaddr = 1
|
Nachdem Sie das alles eingetippt haben, sollte die restlichen Nutzer Ihres
Netzwerks in der Lage sein, das Internet zu benutzen, als wenn sie alle selbst
direkt damit verbunden wären.
Die Option ip_dynaddr ist nützlich für Dial-On-Demand Systeme bzw. für den
Fall, dass Ihr Internet Service Provider dynamische Adressen vergibt.
Damit verhindert man Verbindungsversuche, solange die Netzwerkkarte für das
Internet noch nicht vollständig hochgefahren ist. Im Grunde genommen sorgt
man für einen reibungslosen Netzwerkverkehr für die Nutzer hinter Ihrem
Router.
6.
Spielereien (für einen regnerischen Tag)
Einführung
Glauben Sie es oder oder nicht: Sie sind fertig :). Von hier an bespreche ich
ein paar gebräuchliche Dinge, die Sie interessieren könnten. Alles in diesem
Kapitel ist absolut optional.
Portweiterleitung (Port Forwarding)
Manchmal möchten Sie die Möglichkeit haben, Dienste auf einem Computer hinter
Ihrem Router laufen zu haben oder einfach Ihr Leben im Bereich der
Remoteverwaltung erleichtern. Vielleicht möchten Sie einen FTP, HTTP, SSH oder
VNC-Server auf einer oder mehreren Maschinen hinter dem Router starten und
sich zu allen zu verbinden können. Die einzige Schwierigkeit besteht darin,
dass Sie lediglich eine Dienst/Rechner-Kombination pro Port haben. Zum Beispiel
gibt es keine Möglichkeit, drei FTP-Server hinter Ihrem Router zu starten und
zu allen via Port 21 zu verbinden; nur einer kann auf Port 21 laufen, wärend
die anderen auf z.B. Port 123 und Port 567 laufen müssten.
Alle Portweiterleitungsregeln sind in der Form iptables -t nat -A PREROUTING
[-p Protokoll] --dport [externer Port auf dem Router] -i ${WAN} -j DNAT --to
[IP/Port, auf den weitergeleitet wird]. iptables akzeptiert keine Hostnamen
bei der Portweiterleitung. Wenn Sie einen externen Port auf den selben internen
Port weiterleiten, können Sie den Zielport weglassen. Lesen Sie sich die
Manpage zu iptables(8) durch für weitere Informationen.
Befehlsauflistung 6.1: Ausführen der iptables Befehle |
# export LAN=eth0
# export WAN=eth1
# iptables -t nat -A PREROUTING -p tcp --dport 2 -i ${WAN} -j DNAT --to 192.168.0.2:22
# iptables -t nat -A PREROUTING -p tcp --dport 21 -i ${WAN} -j DNAT --to 192.168.0.56
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.0.56
# iptables -t nat -I PREROUTING -p tcp --dport 5900 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 5901 -i ${WAN} -j DNAT --to 192.168.0.3:5900
# iptables -t nat -I PREROUTING -p tcp --dport 135 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 139 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 445 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p udp --dport 137:138 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p udp --dport 445 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -A PREROUTING -p tcp --dport 6881:6889 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -A PREROUTING -p tcp --dport 4662 -i ${WAN} -j DNAT --to 192.168.0.55
iptables -t nat -A PREROUTING -p udp --dport 4000 -i ${WAN} -j DNAT --to 192.168.0.56
# iptables -t nat -A PREROUTING -p tcp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11
# iptables -t nat -A PREROUTING -p udp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11
# iptables -t nat -A PREROUTING -p tcp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
# iptables -t nat -A PREROUTING -p udp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
# iptables -t nat -A PREROUTING -p udp --dport 88 -i ${WAN} -j DNAT --to 192.168.0.69
|
Notiz:
Wenn Sie andere gebräuchliche / coole Beispiele haben, schreiben Sie mir eine
E-Mail (Englisch).
|
Identd (für IRC)
Internet Relay Chat benutzt den ident-Dienst ziemlich stark. Jetzt, da
die IRC-Clients hinter dem Router sind, brauchen wir einen Weg, um ident sowohl
auf den Clients als auch auf dem Router unterzubringen. Ein solcher Server ist
midentd.
Befehlsauflistung 6.2: Konfiguration von ident |
# emerge midentd
# rc-update add midentd default
# /etc/init.d/midentd start
|
Es gibt noch ein paar weitere ident-Server in Portage. Abhängig von Ihren
Bedürfnissen empfehle ich, oidentd und fakeidentd zu testen.
Zeitserver
Für ein gesundes, funktionierendes System ist es unabdingbar, die Zeit immer
korrekt zu halten. Einer der gebräuchlichsten Wege, dies zu verwirklichen, ist
die Benutzung des Network Time Protocol (NTP) und des ntp-Pakets (das
sowohl Implementierungen für Server und Client enthält).
Viele Menschen haben ntp-Clients auf ihren Computern laufen. Offensichtlich
müssen die NTP-Server in der Welt umso mehr Last verarbeiten, je mehr Menschen
solche Clients starten. In Umgebungen wie unserem Heimnetzwerk können wir
jedoch die Last der öffentlichen Server etwas mindern und dennoch allen Geräten
in unserem Netzwerk die richtige Zeit bereit stellen. Als Bonus sind unsere
privaten Zeit-Updates für alle Clients sehr viel schneller! Alles, was wir zu
tun haben, ist, einen NTP-Server auf unserem Router zu starten, der seine Zeit
mit den öffentlichen Servern synchronisiert und diese Zeit gleichzeitig dem
Rest der Rechner im Netzwerk zur Verfügung stellt. Für den Anfang reicht ein
einfaches emerge ntp auf dem Router.
Befehlsauflistung 6.3: Konfiguration des NTP-Servers |
# nano /etc/conf.d/ntp-client
# rc-update add ntp-client default
# nano /etc/ntp.conf
restrict default ignore
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
# nano /etc/conf.d/ntpd
# rc-update add ntpd default
# /etc/init.d/ntp-client start
# /etc/init.d/ntpd start
|
Notiz:
Sie sollten sicherstellen, dass Sie ein- und ausgehende Kommunikation auf dem
NTP-Port (123/udp) erlauben, wenn Sie Ihren Server einrichten. Der Client
benötigt nur ausgehenden Zugriff auf Port 123 über udp.
|
Jetzt führen Sie auf Ihren Clients ebenfalls ein emerge ntp durch.
Jedoch werden wir hier lediglich den NTP-Client starten, was die Konfiguration
um einiges erleichtert.
Befehlsauflistung 6.4: Konfiguration eines NTP-Clients |
# nano /etc/conf.d/ntp-client
# rc-update add ntp-client default
# /etc/init.d/ntp-client start
|
Rsync Server
Für alle mit mehreren Gentoo-Rechnern in Ihrem LAN ist es ratsam, nicht auf
jedem Rechner ein emerge sync mit einem entfernten Server auszuführen.
Indem Sie einen lokalen rsync-Server aufsetzen, sparen Sie sowohl Ihre eigene
als auch die Bandbreite der Gentoo-rsync-Server. Das geht relativ einfach.
Notiz:
Für eine tiefergehende rsync-Anleitung schauen Sie bitte in die offizielle
rsync Anleitung
|
Da jeder Gentoo-Rechner rsync benötigt, brauchen Sie es nicht mehr zu emergen.
Bearbeiten Sie die standardmäßige Konfigurationsdatei
/etc/rsyncd.conf, entfernen Sie die Kommentare im Abschnitt
[gentoo-portage] und stellen Sie sicher, dass Sie eine
address-Option angeben. Die restlichen Einstellungen sollten okay sein.
Befehlsauflistung 6.5: Konfiguration des rsync-Server |
pid file = /var/run/rsyncd.pid
use chroot = yes
read only = yes
address = 192.168.0.1
[gentoo-portage]
path = /mnt/space/portage
comment = Gentoo Linux Portage tree
exclude = /distfiles /packages
|
Anschließend starten Sie den Dienst (auch hier sind die Standardeinstellungen
okay).
Befehlsauflistung 6.6: Starten des rsync-Servers |
# /etc/init.d/rsyncd start
# rc-update add rsyncd default
|
Jetzt müssen Sie nur noch den Clients mitteilen, dass sie sich mit Ihrem Router
synchronisieren sollen.
Befehlsauflistung 6.7: Client SYNC Einstellungen in make.conf |
SYNC="rsync://192.168.0.1/gentoo-portage"
|
Mail Server
Manchmal ist es schön, den eigenen Simple Mail Transfer Protocol (SMTP)
Server auf dem Router laufen zu lassen. Sie mögen Ihren eigenen Grund dafür
haben, aber ich benutze ihn, damit die Benutzer den Eindruck haben, als
würden Ihre Mails auf der Stelle versendet werden, und damit das wiederholte
Zustellen und das Routen der Mails dem Mail-Server überlassen ist. Manche ISPs
erlauben die Weiterleitung für Accounts, die nicht Teil ihres Netzwerks sind,
überhaupt nicht (z.B. Verizon). Zudem können Sie den Versand von Mails so
drosseln, dass große Anhänge Ihre Verbindung nicht für eine halben Stunde lahm
legen.
Befehlsauflistung 6.8: Konfiguration vom SMTP |
# emerge netqmail
# emerge --config netqmail
# iptables -I INPUT -p tcp --dport smtp ! -i ${LAN} -j REJECT
# ln -s /var/qmail/supervise/qmail-send /service/qmail-send
# ln -s /var/qmail/supervise/qmail-smtpd /service/qmail-smtpd
# cd /etc/tcprules.d
# nano tcp.qmail-smtp
192.168.0.:allow,RELAYCLIENT=""
# make
# rc-update add svscan default
# /etc/init.d/svscan start
|
Ich bin ein großer Fan von qmail, aber selbstverständlich können Sie auch
einen anderen MTA nutzen :). Wenn Sie E-Mail auf den Hosts in Ihrem Netzwerk
konfigurieren, stellen Sie als SMTP-Server 192.168.0.1 ein, dann sollte alles
gut laufen. Möglicherweise möchten Sie die netqmail Seite besuchen, um weitere
Dokumentation zu bekommen.
Ein vollwertiger DHCP-Server
Zu Beginn haben wir dnsmasq benutzt, um den Clients DHCP anzubieten. Für die
meisten Leute mit einem kleinen, einfachen LAN ist diese Lösung perfekt. Aber
vielleicht brauchen Sie etwas mit mehr Ausstattung. Daher wenden wir uns jetzt
einem voll ausgestatteten DHCP Server, wie er von ISC angeboten wird, zuwenden.
Befehlsauflistung 6.9: Konfiguration des dhcpd |
# emerge dhcp
# nano /etc/dhcp/dhcpd.conf
authoritative;
ddns-update-style interim;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.250;
default-lease-time 259200;
max-lease-time 518400;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.1;
}
# nano /etc/conf.d/dhcpd
# rc-update add dhcpd default
# /etc/init.d/dhcpd start
|
Dies ist ein Minimal-Setup, das benötigt wird, um die Funktionalität vom
bisher benutzten dnsmasq zu ersetzen. Wo wir gerade davon sprechen, Sie haben
bestimmt daran gedacht, die DHCP-Funktion in dnsmasq abzuschalten, oder?
Falls nicht, sollten Sie dies jetzt tun (kommentieren Sie dazu die Einstellung
dhcp-range in /etc/dnsmasq.conf aus und starten den
Dienst neu).
Ein (oder zwei oder drei oder ...) weitere(s) LAN(s)
In manchen Situationen haben Sie unter Umständen das Bedürfnis den Router mit
einem anderen LAN zu verbinden. Vielleicht wollen sie eine Gruppe von Freunden
temporär einbinden oder Sie möchten vielleicht verschiedene Gruppen von
Computern separieren oder Ihnen ist einfach nur langweilig. Was auch immer
der Grund sein mag, den Router auf andere LAN-Netzwerke auszudehnen sollte
ziemlich unkompliziert sein. Im folgenden Beispiel werde Ich annehmen, dass
das Netzwerk über eine dritte Ethernetkarte mit Namen eth2 angebunden
ist.
Als erstes müssen Sie die Schnittstelle konfigurieren. Nehmen Sie einfach die
Anweisungen aus der 4.1 Befehlsauflistung
und ersetzen Sie eth0 durch eth2 und 192.168.0 durch
192.168.1.
Als nächstes müssen Sie dsnmasq anpassen um die neue Schnittstelle zu bedienen.
Editieren Sie einfach erneut die /etc/conf.d/dnsmasq Datei und
hängen Sie -i eth2 and DNSMASQ_OPTS an. Das Verwenden von mehreren -i
funktioniert. Editieren Sie dann /etc/dnsmasq.conf und fügen Sie
eine weitere Zeile wie die dhcp-range Zeile in der 5.1 Befehlsauflistung hinzu in der Sie
192.168.0 durch 192.168.1 ersetzen. Auch hier ist ein kein
Problem mehrere dhcp-range Zeilen zu haben.
Letztlich setzen Sie die Regeln aus der 5.2
Befehlsauflistung und duplizieren die Regeln, welche ein -i ${LAN}
in sich haben. Es bietet sich an eine weitere Variable, wie z.B. LAN2 zu
erstellen um die Sache übersichtlicher zu machen.
7.
Problembehandlung
Nützliche Helfer
Wenn Ihre Rechner nicht miteinander kommunizieren wollen, werfen Sie doch einen
Blick auf die folgenden Tools (Sie finden sie alle in der Portage-Kategorie
net-analyzer):
| Dienstprogramm |
Beschreibung |
| wireshark |
Grafisches Tool, mit dem jeglicher Netzwerkverkehr gemäß definierter
Filter angezeigt werden kann
|
| tcpdump |
Kommandozeilen-Tool, mit dem jeglicher Netzwerkverkehr gemäß
definierter Filter ausgegeben werden kann |
| iptraf |
Auf ncurses basierender IP-LAN-Monitor |
| ettercap |
Auf ncurses basierende Netzwerküberwachung |
DHCP lässt sich nicht starten
Wenn Sie das init.d-Skript von dhcp zum ersten Mal starten, kann es vorkommen,
dass es nicht ordnungsgemäß geladen wird, Sie jedoch nicht richtig darüber
informiert werden.
Befehlsauflistung 7.1: Beispiel für Startprobleme bei DHCP |
# /etc/init.d/dhcp start
* Setting ownership on dhcp.leases ... [ ok ]
* Starting dhcpd ... [ !! ]
|
Der Trick besteht darin, zu wissen, wo dhcpd seine Ausgaben hinschickt.
Bewegen Sie sich dazu nach /var/log und lesen Sie die
Protokolldateien. Da der Name der Protokolldatei von dem von Ihnen verwendeten
syslog-Paket abhängt, sollten Sie versuchen die Kandidaten mittels
grep -Rl dhcpd /var/log einzugrenzen. Vielleicht haben Sie nur einen
Tippfehler in den Konfigurationsdateien gemacht. Darüber hinaus
sollten Sie versuchen, den Dienst über dhcpd -d -f (kurz für debug /
foreground, also ausführliche Ausgabe und der Daemon rutscht nicht in den
Hintergrund) zu starten und dessen Ausgabe auf Fehler untersuchen.
Falscher MTU Wert
Sollten bei Ihnen der Fehler auftreten, dass Sie bestimmte Internetseiten
nicht laden können, wohingegen andere einwandfrei funktionieren, könnte es
daran liegen, dass Sie Probleme mit der Größe der MTU (Maximum Transfer
Unit, maximale Übertragungseinheit, Anm. d. Übersetzers) haben. Dies können
Sie schnell herausfinden, indem Sie folgenden iptables-Befehl ausführen:
Befehlsauflistung 7.2: Umgehen der MTU Problematik |
# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
|
Dies hat Einfluss auf alle neuen Verbindungen, daher sollten Sie eine Webseite,
mit der Sie bisher Probleme hatten, einfach erneut laden. Die Standardgröße für
die MTU beträgt bei 100 MBit Ethernet 1500; dieser Wert gilt auch für
PPPoA. Für PPPoE-Verbindungen ist es 1492. Für weitere Informationen
sollten Sie Kapitel 15 des Linux Advanced
Routing & Traffic Control HOWTO lesen.
Falls dieser Befehl bei Ihnen nicht funktioniert, können Sie versuchen, die
Regel in die Tabelle "mangle" hinzuzufügen. Fügen Sie einfach -t mangle
an den Befehl an.
Keine Möglichkeit, zwei Maschinen direkt zu verbinden
Wenn (aus welchem Grund auch immer) Sie versuchen, zwei Maschinen direkt
ohne Hub oder Switch zu verbinden, wird ein normales Ethernet-Kabel nicht
funktionieren, sofern Sie keine Auto MDI/MDI-X Netzwerkkarten (auch bekannt
als "autosensing") besitzen. Sie brauchen dazu ein anderes Kabel, genannt
Crossover-Kabel. Dieser Wikipedia Artikel
beschreibt die Details.
8.
Ausklang
Ich habe keine abschließenden Bemerkungen. Wenn Sie jedoch irgendwelche
Probleme mit diesem Guide haben, können Sie mich per E-Mail erreichen (Englisch). Eine andere
Möglichkeit besteht darin, dass Sie einen Bug melden auf Gentoos Bugtracking Website. Wenn Sie ein
paar interessante Dinge haben, von denen Sie annehmen, dass sie diese Anleitung
verbessern, schicken Sie sie mir bitte zur Einbindung (auch hier bitte auf
Englisch).
Die Inhalte dieses Dokuments sind, sofern nicht explizit
anders genannt, unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert. Die Gentoo Name and Logo
Usage Guidelines treffen zu.
|