Gentoo Logo

Home Router Guide

Inhalt:

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)
Wenn Sie 2.4.x benutzen, müssen Sie folgendes für DHCP aktivieren:
   [*] 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

(Ersetzen Sie 'vla9h924' mit Ihrem Benutzernamen und 'boogie' mit Ihrem Passwort)

# nano /etc/conf.d/net
Sagen Sie baselayout, dass es adsl über eth1 für ppp0 verwenden soll:
config_ppp0=( "ppp" )
link_ppp0="eth1"
plugins_ppp0=( "pppoe" )
pppd_ppp0=(
        "defaultroute"
        "usepeerdns"
        Es mag noch andere Einstellungen geben, die Sie setzen möchten, siehe hierzu /usr/share/doc/openrc-*/net.example.bz2
)
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

Für Benutzer dynamischer IPs:
# emerge dhcpcd
# nano /etc/conf.d/net
Sie brauchen einen Eintrag wie den folgenden:
config_eth1=( "dhcp" )

Für Benutzer statischer IPs:
# nano /etc/conf.d/net
Sie brauchen Einträge wie die folgenden:
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
Einen DNS-Server pro Zeile:
nameserver 123.123.123.123

Sowohl für statische als auch dynamische Setups:
# 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
Fügen Sie eine Zeile wie die folgende hinzu:
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
Fügen Sie folgende Zeile hinzu m DHCP zu aktivieren:
dhcp-range=192.168.0.100,192.168.0.250,72h
Beschränken Sie dnsmasq darauf nur die LAN-Schnittstelle zu verwenden
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

Zuerst löschen wir unsere aktuellen Regeln
# iptables -F
# iptables -t nat -F

Richten Sie das Standardverhalten für Pakete ein, auf die keine Regel zutrifft
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD DROP

Kopieren Sie diese Beispiele ...
# export LAN=eth0
# export WAN=eth1

Dann schränken wir unsere Dienste so ein, dass sie nur im LAN arbeiten
# 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

(Optional) Erlauben Sie den Zugriff auf unseren SSH-Server aus dem WAN
# iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT

Werfen Sie TCP/UDP-Pakete für privilegierte Ports weg
# 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

Schlussendlich fügen wir NAT-Regeln hinzu
# 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
Sagen Sie dem Kernel, dass IP-Forwarding in Ordnung ist
# echo 1 > /proc/sys/net/ipv4/ip_forward
# for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

So müssen wir nach dem Booten die Regeln nicht per Hand starten
# /etc/init.d/iptables save
# rc-update add iptables default
# nano /etc/sysctl.conf
Fügen Sie die folgende Zeilen hinzu oder entfernen Sie die Kommentare:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1

Wenn Sie eine dynamische IP-Adresse haben, möchten Sie das wahrscheinlich aktivieren:
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

Kopieren Sie diese Beispiele ...
# export LAN=eth0
# export WAN=eth1

Leiten Sie Port 2 zu einem internen SSH-Host weiter
# iptables -t nat -A PREROUTING -p tcp --dport 2 -i ${WAN} -j DNAT --to 192.168.0.2:22

FTP-Weiterleitung zu einem internen Host
# iptables -t nat -A PREROUTING -p tcp --dport 21 -i ${WAN} -j DNAT --to 192.168.0.56

HTTP-Weiterleitung zu einem internen Host
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.0.56

VNC-Weiterleitung zu einem internen Host
# 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
Wenn Sie auf den VNC-Server auf 192.168.0.3 verbinden möchten, fügen Sie ein simples ':1' an den Hostnamen des Routers an.

SAMBA-Weiterleitung zu einem internen Host (übermäßig viele Ports, um es Windows recht zu machen)
# 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

Bittorrent-Weiterleitung
# iptables -t nat -A PREROUTING -p tcp --dport 6881:6889 -i ${WAN} -j DNAT --to 192.168.0.2

eDonkey/eMule-Weiterleitung
# iptables -t nat -A PREROUTING -p tcp --dport 4662 -i ${WAN} -j DNAT --to 192.168.0.55

Game Cube Warp Pipe Unterstützung
 iptables -t nat -A PREROUTING -p udp --dport 4000 -i ${WAN} -j DNAT --to 192.168.0.56

Playstation2 Onlineunterstützung
# 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

Xbox Live
# 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
Passen Sie hier an, wenn Sie möchten. Die Standards sollten aber in Ordnung sein.
# rc-update add ntp-client default

# nano /etc/ntp.conf
Fügen Sie folgende Zeilen hinzu:
restrict default ignore
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
Dies erlaubt nur Clients mit einer IP-Adresse aus dem 192.168.0.xxx-Netz die Nutzung Ihres NTP-Servers.
# nano /etc/conf.d/ntpd
Editieren Sie hier, wenn Sie möchten. Die Standards sollten aber in Ordnung sein.
# 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
Änderen Sie den 'pool.ntp.org'-Server in der NTPCLIENT_OPTS Variable auf '192.168.0.1'
# 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
Stellen Sie sicher, dass die Ausgabe von `hostname` richtig ist
# 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

Fügen Sie einen Eintrag ähnlich diesem zum "allow"-Abschnitt hinzu:
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
Hier eine Beispielkonfigurationsdatei:
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
(Setzen Sie IFACE="eth0")
# 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).



Drucken

Seite aktualisiert 30. Oktober 2011

Die Originalversion dieser Übersetzung wird nicht länger gepflegt

Zusammenfassung: Dieses Dokument erklärt, wie man eine alte Gentoo-Maschine in einen Router verwandelt, um das eigene Heimnetzwerk mit dem Internet zu verbinden.

Mike Frysinger
Autor

Robert Körner
Übersetzer

Jens Grüntjes
Übersetzer

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.