Privates Netzwerk mit Kanotix
Dieses kleine Howto beschreibt wie man schnell zwei (oder ein paar mehr) Kanotix-Rechner zu einem kleinen privaten Netzwerk verbindet und wie man von jedem Rechner ins Internet kommt.
Privat bedeutet, daß nicht alle hosts (Rechner) im Internet zu sehen sind, aber es handelt sich nicht um das ähnlich klingende
VPN "virtual private network".
Es ist für Kanotix-Nutzer gedacht, die noch keine Erfahrung mit Netzwerken gemacht haben. (Die aber wissen, was Ethernet, WLAN und Internet sind ;-)). Zur Erinnerung werden jedoch am Ende die wichtigsten Fachbegriffe im Glossar erklärt.
Ich gehe davon aus, dass jeder Rechner über Ethernet verbunden ist und einer dieser Rechner (der Router) mit dem Internet verbunden werden kann (z.B.: via DSL oder ISDN). Alle Rechner eines lokalen Netzes müssen über ein Hub oder Switch mit einen üblichen Netzwerkkabel ans Netz angeschlossen werden. Will man nur zwei Rechner in ein Mininetz bringen, kann man diese direkt, ohne einen Hub, verbinden. Voraussetzung ist allerdings ein
gekreuztes Kabel (Crosslink-Patchkabel).
Alle anderen Rechner (Knoten) können dann über den Router ins Internet. Falls man mit dem Netzwerk nicht ins Internet will, kann man die Anweisungen, die den Router betreffen, überspringen und die beiden letzten Kapitel weglassen.
1. Netzwerktopologie überlegen
Zuerst sollte man jedem Rechner eine eigene, einmalige IP Adresse zuweisen. Für private Netzwerke sind die Adressen 192.168.xxx.yyy vorgesehen. xxx kann eine Zahl zwischen 0 und 254 sein und yyy kann zwischen 1 und 254 gewählt werden. (Ein Beispiel: 192.168.1.1 )
yyy ist der so genannte Hostanteil der IP-Adresse.
0 beim Hostanteil (=yyy) ist für das Netz selbst vorgesehen, hier also 192.168.1.0. Hat man weniger als 254 Rechner (trifft wohl auf die meisten zu ;) ), so sollte man für alle Rechner ein gemeinsames Subnetz (=xxx) wählen. Ich nehme hier (und sonst auch immer) xxx=1.
Wer sich IP-Adressen so schlecht merken kann oder will, der kann auch jedem Rechner einen Namen geben. In diesem Beispiel haben die Rechner im privaten Netzwerk diese IPs und Namen:
Rechner |
Adresse |
Name |
Router |
192.168.1.1 |
asterix |
Knoten 1 |
192.168.1.2 |
obelix |
Knoten 2 |
192.168.1.3 |
miraculix |
Folgende private Adressbereiche stehen zur Nutzung zur Verfügung (vgl.
RFC 1918∞):
Adressbereich |
Netzmaske |
Kurzform |
10.0.0.0 - 10.255.255.255 |
255.0.0.0 |
10.0.0.0/8 |
172.16.0.0 - 172.31.255.255 |
255.255.0.0 |
172.16.0.0/16 |
192.168.0.0 - 192.168.255.255 |
255.255.255.0 |
192.168.0.0/24 |
Diese Adressen werden nicht im Internet geroutet, d.h. sie sind von außen nicht direkt erreichbar, sondern nur über NAT.
2. Netzwerkkarte konfigurieren
Nun kann man bei jedem Rechner die Ethernetkarte konfigurieren:
Am einfachsten verwendet man dazu "
netcardconfig" (K-Menü -> Kanotix -> Netzwerk -> Netzwerkkarte konfigurieren). Wenn man mehrere Netzwerkkarten hat, muss man darauf achten die Karte zu konfigurieren, mit der der Rechner an das private Netzwerk angeschlossen ist. Zur Not kann man alle Karten durchprobieren.
Achtung: eine WLAN-Karte ist auch eine Ethernetkarte!
Nachdem man die richtige Karte ausgewählt hat, sagt man "Nein" zu "Einstellungen über DHCP beziehen".
Anschließend gibt man die IP Adresse ein, die man diesem Rechner zugedacht hat (siehe die Tabelle oben mit asterix, obelix und miraculix).
Wenn man für alle Rechner das gleiche Subnetz (=xxx) gleich gewählt hat, kann man den vorgeschlagenen Wert (255.255.255.0) für die Netzmaske übernehmen, andernfalls nimmt man "255.255.0.0".
Die vorgeschlagene Broadcastadresse kann man einfach übernehmen.
Als Gateway trägt man die IP Adresse des Routers ein, falls man mit dem Rechner über den Router ins Internet gehen will. Andernfalls macht man dieses Feld
leer. Auch beim Router selbst muss das Feld
leer sein
Das Feld "Nameserver" lässt man
leer.
2.1 Alternative: Netzwerkkarte manuell konfigurieren
Wenn man sich schon ein Bisschen mehr zutraut kann man die Netzwerkkarten Konfiguration auch durch einen Eintrag in die Datei
/etc/network/interfaces selbst eintragen. Es sind ebenso viele Zeilen pro Netzwerkkarte nötig wie auch in der "
netcardconfig" abgefragt werden. Nachfolgend zwei Beispiel für die Netzwerkkarte
eth0.
Beispiel für den Router oder einen Knoten in einem Netz ohne Router:
# diese Geräte werden beim Start Automatisch gestartet
auto lo eth0
# Loopback-Gerät: Nur ändern wenn man weiß was man macht
iface lo inet loopback
# Das sind die Einstellungen für die erste Netzwerkkarte, die mit dem LAN verbunden ist
# Achtung: beim PPPoE-Router könnte es auch eth1 sein!
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
Beispiel für einen normalen Rechner (Knoten) in einem Netz mit dem Rechner 192.168.1.1 als Router:
auto lo eth0
iface lo inet loopback
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
Nachdem man die Datei angepasst hat, muss man das Netzwerk mit dem Initscript "
/etc/init.d/networking restart" neu starten. Dieses Skript wird auch beim Booten des Rechners ausgeführt.
Alternativ zu obigem Beispiel kann man eine
temporäre Netzwerkkonfiguration mit folgenden shell-Befehlen einstellen:
ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up
route add -net 192.168.1.0 netmask 255.255.255.0 eth0
route add default gw 192.168.1.1 netmask 0.0.0.0
Hierbei werden die Einstellungen nicht in die Konfigurationsdatei /etc/network/interfaces übernommen, so dass man mit "/etc/init.d/networking restart" die vorherige Konfiguration wiederherstellen kann.
3. Lokale Namensauflösung einrichten
Um sich nicht immer die einzelnen IP-Adressen zu merken kann man das natürlich etwas einfacher gestalten. Man ordnet einer IP-Adresse einen sog. Alias (oder Rechnernamen) zu. Man spricht dann den Rechner nicht mehr mit seiner IP sondern mit seinen gewählten Alias an. Für die lokale Namensaulösung ist die Datei
/etc/hosts zuständig. Hier ist ein Beispiel für ein Mininetzwerk mit 2 Rechner. Rechner 1 nennen ich hier asterix und Rechner 2 ist obelix.
# zuerst das Loopback, damit sich jeder Rechner selbst mit "localhost" ansprechen kann
127.0.0.1 localhost.localdomain localhost
# dann alle Netzwerkteilnehmer
192.168.1.1 asterix
192.168.1.2 obelix
192.168.1.3 miraculix
# Der Rest ist IPv6-Zeugs für localhost.
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Wenn alle Netzwerkrechner eingetragen sind, kann diese Datei ohne Änderung auf alle Rechner verteilt werden.
4. Netzwerkverbindung testen
Man öffnet einfach eine Konsole und tippt "
ping <Adresse>" oder "
ping <Aliasname>" ein. <Adresse> ist natürlich die IP des Rechners, zu dem man die Verbindung testen will. <Aliasname> der zuvor gewählte Name aus der
/etc/hosts. Mit
Strg+
C kann man das Pingen beenden. Schlägt das Pingen fehl, so hat man vermutlich entweder einen Fehler bei den Einstellungen gemacht oder einfach die falsche Karte konfiguriert.
Beispiel für die beiden Varianten, die alle das gleiche tun, nämlich einen ping an asterix zu senden
oder...
5. Router konfigurieren
Der Router braucht (mindestens) zwei Netzwerkschnittstellen: Eine Netzwerkkarte und einen Zugang zum Internet (z.B: Modem, ISDN, oder DSL). Im Prinzip werden auf einem Router zwei Netzschnittstellen (z.B.: eth0 u. eth1 oder eth0 u. ppp0) eingerichtet und zwischen ihnen ein Kanal (IP-Weiterleitung) eingerichtet (siehe Skript unten).
Nachdem man alle Einstellungen für diese Schnittstellen vorgenommen hat, kann man das Routing aktivieren. Am Server (Router) muss dazu der Client "maskiert" werden, damit er ins Internet kann. Hierzu werden die Datenpakete des Clients so maskiert, dass der Hardware-Router/ Provider denkt, sie kämen vom Server/Router (asterix). Dazu braucht macht man ein kleines Shellskript:
#!/bin/sh
# INTERNET=ppp0 # Modem oder DSL-Karte
# INTERNET=ippp0 # ISDN
# INTERNET=eth0 # DSL über PPPoE (Netzwerkkarte -> DSL-Modem)
# INTERNET=eth1 # DSL über PPPoE (wenn "eth0" nicht funktioniert)
# INTERNET=wlan0 # WLan-Karte
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o $INTERNET -j MASQUERADE
Dieses Skript kopiert man in einen Editor. Dann muss man
eine der Zeilen mit "INTERNET=..." entkommentieren (erstes "#" löschen) - je nachdem wie man ins Internet will. Jetzt wird das Skript gespeichert speichert, am besten als Superuser unter "
/usr/local/sbin/router.sh" und mit dem Befehl "
chmod u+x /usr/local/router.sh" ausführbar gemacht. Schließlich führt man das Skript mit "
router.sh" aus und ... voilà der Router läuft.
Anmerkung: In obiger Form lag dieses Script schon der 2005-02 bei (im Verzeichnis /usr/local/bin), man muss nur ggf. die erste Zeilen mit 'Internet= ... ' aendern. Beim AVM Fritz ISDN-Modem muss man u.U. trotzdem "ppp0" statt "ippp0" nehmen.
Wer mag, kann auch ein etwas ausführlicheres Initscript schreiben, wie es sich eigentlich für Boot-Scripte gehört. Hier sind noch ein paar abfragen und Optionen enthalten:
#!/bin/sh
#
# router.sh Dieses Startupskript startet einfache Routingtabellen.
# Es werden keine Firewall-Regeln implementiert.
#
# Autoren: RanETo, BlueLupo und DarkTiger vom KanotixWiki
#
# Version: 0.2 2005-03-12
#
# WICHTIG! Damit das Skript richtig funktioniert, muss zuerst eine der
# folgenden Zeilen entkommentiert werden. Und zwar genau die,
# die Schnittstelle definiert, mit der der Router mit dem
# Internet verbunden ist.
#
# INTERNET=ppp0 # Modem oder DSL-Karte
# INTERNET=ippp0 # ISDN
# INTERNET=eth0 # DSL über PPPoE (Netzwerkkarte -> DSL-Modem)
# INTERNET=eth1 # DSL über PPPoE (wenn "eth0" nicht funktioniert)
# INTERNET=wlan0 # WLan-Karte
NAME=router.sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
PROGRAMM=$(which iptables)
PIDDATEI=/var/run/$NAME.pid
SKRIPTNAME=/etc/init.d/$NAME
if [ -z $INTERNET ]
then
echo "$NAME: Die Internetschnittstelle wurde noch nicht definiert!" >&2
echo " Bitte entkommentieren Sie die richtige Zeile!" >&2
exit 0
fi
if [ ! -x $PROGRAMM ]
then
echo "$NAME: Das Programm '$PROGRAMM' zur Steuerung des Routers ist nicht vorhanden!" >&2
exit 0
fi
router_start() {
echo "1" > /proc/sys/net/ipv4/ip_forward
$PROGRAMM --table filter --policy FORWARD ACCEPT
$PROGRAMM --table nat --append POSTROUTING --out-interface $INTERNET --jump MASQUERADE
}
router_stop() {
echo "0" > /proc/sys/net/ipv4/ip_forward
$PROGRAMM --table filter --policy FORWARD ACCEPT
$PROGRAMM --table nat --flush POSTROUTING
}
router_status() {
for TABELLE in filter nat mangle
do
echo "Tabelle \"$TABELLE\""
$PROGRAMM --table $TABELLE --list
echo
done
}
case "$1" in
start)
echo -n "$NAME: starte Routing ..."
router_start
echo " fertig"
;;
stop)
echo -n "$NAME: beende Routing ..."
router_stop
echo " fertig"
;;
restart|force-reload)
echo -n "$NAME: starte Routing neu ..."
router_stop
router_start
echo " fertig"
;;
status)
router_status
;;
*)
echo "Aufruf: $SKRIPTNAME {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac
exit 0
Dieses Skript (eins von den beiden) muss man jedoch nach jedem Systemstart starten. Wenn man es mit
ln -s /usr/local/sbin/router.sh /etc/rc5.d/S90router.sh
in den Standartrunlevel linkt, dann wird es bei jedem (normalen) Systemstart gestartet.
Das zweite ausführlichere Script kann man nun auch zum manuellen Starten, Stoppen oder Restarten benutzen bzw. den Status abfragen.:
/usr/local/sbin/router start
würde den Router starten. Analog würde der Parameter
stop den Router stoppen,
restart einen Neustart durchführen und
status zeigt dir, welch Wunder, den Status der Weiterleitung an.
mit dem Befehl
route muß nun die korrekte Route dastehen, welche lautet :
tja wie denn (nachtragen)
5.1 Router mit DSL-Modem (DSL via PPPoE)
Auf dem Router wird am besten zuerst die Netzwerkkarte (eth0) für den Internetanschluss eingerichtet. Man kann dazu den grafischen Dialog benutzen. Für eine DSL Anbindung hier K-Menü -> Kanotix -> DSL -> My PPPoe Conf. Die Zugangsdaten vom Provider und den DNS-Server bitte bereit halten. Hat man den Internetzugang konfiguriert wird die zweite Netzwerkschnittstelle (eth1) wie im Kapitel 2 beschrieben eingerichtet.
Aufpassen muss man nur bei der Zuweisung der IP-Adresse zu eth0 und eth1. Die IPs müssen in unterschiedlichen Subnetzen liegen sonst wird der Router nicht funktionieren.
Beispiel:
Netzwerkkarte fürs lokale Netz: eth1 192.168.1.1 hier im Subnetz
1 (=xxx)
Netzwerkkarte für DSL Anschluß: eth0 192.168.5.1 hier im Subnetz
5 (=xxx)
6. Internetverbindung testen
Einfach im Browser "www.kanotix.de" eintippen ;-). Sollte es nicht funktionieren, kann man mit "
ping 193.254.184.126" prüfen ob der Router und das Netz richtig konfiguriert wurde. Funktioniert das pingen, dann muss man noch ein paar Nameserver in die
/etc/resolv.conf des Knotens eintragen. Eventuell findet man die IP-Adressen von einigen Nameservern auf dem Router in dessen
/etc/resolv.conf wenn dieser mit dem Internet verbunden ist.
Eine Liste mit DNS-Servern von
T-Online findet man hier
http://www.atelier89.de/users/dirk/t-o/010.html#liste∞
Netcologne: 213.168.112.60 und 194.8.194.60
Arcor: 145.253.2.75 und 145.253.2.11
1&1: 217.237.151.97 und 217.237.150.33
Jeweils zwei (max. 3) in die Datei
/etc/resolv.conf unten dranhängen.
Hier ein Beispiel mit zwei DNS-Server (Nameserver) von 1&1:
nameserver 217.237.151.97
nameserver 217.237.150.33
Weiterführende Links
The Network Administrators' Guide∞
Aufsetzen eines Gateways mit einem Debian-System∞
Glossar
Router (
Wikipedia∞)
Ein Router ist sozusagen ein Vermittlungsknoten zwischen einen lokalen Netzwerk und dem Zielnetz. Er leite die Daten per Netzwerkprotokoll (TCP/IP) in das Zielnetz. Wohin Daten geleitet weiß der Router anhand seiner Routingtabellen. Diese Routen können statisch und dynamisch sein. Unabhängig vom Medium kann ein Router die Daten weiterleiten. Also z.B. von Ethernet nach ISDN.
Implementiert kann Router als
Blackbox (externes Gerät = Hardwarerouter) oder in einen PC als Software (Softwarerouter) sein. Wobei ersterer meistens in Kombination mit einen Switch/Hub und/oder DSL-Modem angeboten wird.
DNS (
Wikipedia∞)
ausgesprochen
Domain Name System ist zur Auflösung der IP-Adressen in Namen und umgekehrt. Ohne DNS würde ein Surfen nicht funktionieren. Die wenigen Root-Domainname-Server sind weltweit verteilt und ausfallsicher ausgelegt.
Ethernetkarte (
Wikipedia∞)
Ist eine Netzwerkkarte die auf der gängigsten Netzwerktechnologie beruht. Über diese Karte werden Daten vom Rechner in ein Netzwerk übertragen (und umgekehrt). Andere Technologien sind z.B.:
Token Ring∞ und
ARCNET∞.
LAN (
Wikipedia∞)
LAN ist die Abkürzung für Local Area Network. Ein LAN ist ein räumlich abgegrenztes Netzwerk im eigenen Haus.
Hub, Switch (
Wikipedia∞)
Mit einen Hub oder einem Switch werden Netzwerkelemente z.B. PC's und Netzwerkdrucker sternförmig miteinander verbunden. Ein Hub hat ein Patchpanel mit einer Anzahl Ports als Anschlussmöglichkeit für Netzwerkgeräte. Er bestimmt mit welchem anderen Rechner ein Computer kommunizieren will und stellt diesen durch. Wärend der Übertragung können keine weiteren Verbindungen hergestellt werden. Ein Switch funktioniert prinzipiell wie ein Hub, kann aber mehrere Verbindungen herstellen.
Mini Faq (einarbeiten falls möglich)
-Q:
ifdown eth1 auf dem Router, dann geht das lokale Netz nicht mehr, dafür aber Internet wieder. Nach
ifup eth1 kann ich wieder ins LAN aber nicht mehr ins WWW. Was soll ich machen?
-A: Du musst die Zeile
gateway ???.???.???.??? aus der
/etc/network/interfaces deines Routers nehmen!
-Q: Was bedeutet SIOCADDRT: File exists. Failed to bring up eth0
-A: Die Einträge für Adresse und Gateway sind gleich. Falls man den Rechner als Router benutzt muss Gateway
leer sein. Andernfalls: die Adresse des Routers ist falsch.
Diese Antwort ist geraten -> Überprüfen
-Q: Hmm, mein Netzwerk geht nicht. Was nun?
-A: Fehlerquellen lokalisieren! Pingen was das Zeug hält! Netzwerkkarten (eth1, eth2 etc..) laufen auch? (Gegebenerfalls ifup eth1 ... ifup eth2 ... durchführen)
Config Files überprüfen (lassen *g*), kleine Fehler beim Eintrag in
/etc/network/interfaces (z.B. falsche broadcast) können eine grosse Wirkung haben.
Kabel prüfen! Auswechseln der fraglichen Kabel mit welchen, die offensichtlich in Ordnung sind und markieren!
zurück