19.03.2024, 07:30 UhrDeutsch | English
Hallo Gast [ Registrierung | Anmelden ]

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

ping 192.168.1.1

oder...

ping asterix



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
XML Revisions of $tag
Seiten-History :: Letzter Editor : RoEn :: Eigentümer : RanETo ::
Powered by pnWikka 1.0
 
 
Deutsch | English
Logos and trademarks are the property of their respective owners, comments are property of their posters, the rest is © 2004 - 2006 by Jörg Schirottke (Kano).
Consult Impressum and Legal Terms for details. Kanotix is Free Software released under the GNU/GPL license.
This CMS is powered by PostNuke, all themes used at this site are released under the GNU/GPL license. designed and hosted by w3you. Our web server is running on Kanotix64-2006.