Netzwerkanalyse, Fehlersuche, Testberichte
Home / News
Netzwerkanalyse
Grundlagen
Verkabelung
Erste Schritte
Baselining
Let's sniff
Tools
Auswerten/Filtern
Typische Probleme 1
Typische Probleme 2
Sicherheit
Bücher
Tutorials
Cacti
DSL einrichten
DynDNS einrichten
m0n0wall | pfSense
Nmap
VirtualBox
Wireshark
Forum
Shop
FAQ
Know How
Testberichte
Hardware-DB
Events
Netzwerklexikon
Links / Service
Suche
Kontakt
Impressum
Feedback
Sitemap
Partner
Unser Partner für
SSL Zertifikate
ist Checkdomain GmbH.
Tutorials

Konsolenserver unter Linux im Eigenbau

Wozu das Ganze?

In jedem Rechnerraum und Rechenzentrum finden sich viele Geräte die sich über einen seriellen Port bedienen lassen. So haben beispielsweise alle Router und Switche von Cisco einen seriellen Anschluss. Viele Servermodelle von SUN lassen sich ebenfalls seriell administrieren. Um auf diese seriellen Schnittstellen über das Netzwerk zuzugreifen gibt es eine Reihe von kommerziellen Lösungen. Marktführer auf diesem Gebiet ist die Firma Cyclades. Für viele Anwendungsfälle reicht aber eine PC-Lösung auf Basis von freier Software aus.

Konsolenserver im Eigenbau

Für die Eigenbaulösung benötigen wir lediglich einen einfachen Linux-PC mit der entsprechenden Anzahl serieller Schnittstellen und einem Netzwerkinterface. Die Software ser2net von Corey Minyard erledigt den Rest.

Prinzipdarstellung Konsolenserver

Prinzipdarstellung eines Konsolenservers

Über die seriellen Schnittstellen wird der Konsolenserver mit den zu steuernden Geräten verbunden. Der Zugriff des Administrators kann dann über das Netzwerk erfolgen.

Installation von ser2net

Unter Debian reicht ein "apt-get install ser2net" für die Installation. Aber auch die Installation aus dem Sourcecode ist kein Problem. Zuerst laden wir uns die aktuelle Version von http://sourceforge.net/projects/ser2net. Dieses Tutorial basiert auf der Version 2.1. Nach dem Download entpacken wir das Archiv mittels tar.

    [mk] ~/download $ tar xvzf ser2net-2.1.tar.gz 
    ser2net-2.1/
    ser2net-2.1/Makefile.in
    ser2net-2.1/README
    ser2net-2.1/AUTHORS
    ser2net-2.1/COPYING
    .
    .
    .
    ser2net-2.1/readconfig.h
    ser2net-2.1/selector.h
    ser2net-2.1/utils.h
    ser2net-2.1/telnet.h
    ser2net-2.1/ser2net.8
    ser2net-2.1/ser2net.conf
    ser2net-2.1/ser2net.spec

Nach dem Entpacken wird in das Verzeichniss "ser2net-2.1" gewechselt und das Übersetzen mit dem Aufruf von "./configure" vorbereitet.

    [mk] ~/download $ cd ser2net-2.1
    [mk] ~/download/ser2net-2.1 $ ./configure 
    creating cache ./config.cache
    checking for a BSD compatible install... /bin/install -c
    checking whether build environment is sane... yes
    .
    .
    .
    checking for main in -lnsl... yes
    checking for main in -lwrap... no
    updating cache ./config.cache
    creating ./config.status
    creating Makefile

Läuft configure ohne Fehler durch kann "make" aufgerufen werden.

    [mk] ~/download/ser2net-2.1 $ make
    gcc -s -DPACKAGE=\"ser2net\" -DVERSION=\"2.1\ ... -c controller.c
    gcc -s -DPACKAGE=\"ser2net\" -DVERSION=\"2.1\ ... -c dataxfer.c
    gcc -s -DPACKAGE=\"ser2net\" -DVERSION=\"2.1\ ... -c devcfg.c
    gcc -s -DPACKAGE=\"ser2net\" -DVERSION=\"2.1\ ... -c readconfig.c
    gcc -s -DPACKAGE=\"ser2net\" -DVERSION=\"2.1\ ... -c selector.c
    gcc -s -DPACKAGE=\"ser2net\" -DVERSION=\"2.1\ ... -c ser2net.c
    gcc -s -DPACKAGE=\"ser2net\" -DVERSION=\"2.1\ ... -c utils.c
    gcc -s -DPACKAGE=\"ser2net\" -DVERSION=\"2.1\ ... -c telnet.c
    /bin/sh ./libtool --mode=link gcc -s -Wall -O3 -march=i686  -o ser2net  ... 
    mkdir .libs
    gcc -s -Wall -O3 -march=i686 -o ser2net controller.o dataxfer.o ...

Für die Installation mit dem Aufruf "make install" sind Rootrechte erforderlich.

    [root] ~/download/ser2net-2.1 $ make install 
    make[1]: Entering directory `/root/download/ser2net-2.1'
    /bin/sh ./mkinstalldirs /usr/local/sbin
     /bin/sh ./libtool  --mode=install /bin/install -c  ser2net /usr/local/sbin/ser2net
    /bin/install -c ser2net /usr/local/sbin/ser2net
    make  install-man8
    make[2]: Entering directory `/root/download/ser2net-2.1'
    /bin/sh ./mkinstalldirs /usr/local/man/man8
     /bin/install -c -m 644 ./ser2net.8 /usr/local/man/man8/ser2net.8
    make[2]: Leaving directory `/root/download/ser2net-2.1'
    make[1]: Leaving directory `/root/download/ser2net-2.1'

Damit ist ser2net installiert und bereit zum Einsatz.

Konfiguration und Test

Die Konfiguration erfolgt über die Datei "/etc/ser2net.conf". In dieser Datei wird die Verbindung zwischen den seriellen Devices und den TCP-Ports hergestellt. Für jede Schnittstelle ist ein Eintrag im Format

    <TCP port>:<state>:<timeout>:<device>:<options>

erforderlich. Sehen wir uns den Aufbau der Konfigurationsdatei von ser2net an einem Beispiel an:

    2021:telnet:30:/dev/ttyS0:9600
    2022:telnet:30:/dev/ttyS1:19200  
    2023:telnet:60:/dev/ttyS2:19200  

Der erste Eintrag verbindet die Schnittstelle /dev/ttyS0 (COM1) mit dem TCP-Port 2021. Als Protokoll wird Telnet genutzt und die Übertragungsrate wird auf 9600 Bit/s eingestellt. Über weitere Einstellungsmöglichkeiten informiert die Manualpage von ser2net (man ser2net).

Nun ist es Zeit für einen ersten Test. ser2net wird mit dem Kommando

    [mk] ~ $ ser2net -d -p 3000

aufgerufen. Der Parameter "-d" verhindert das ser2net als Hintergrundprozess startet. Um nun eine Verbindung zu einem seriellen Port herzustellen starten wir eine Telnetsitzung zur Linuxbox mit zusätzlicher Angabe der Portnummer.

    [mk] ~ $ telnet localhost 2023
    Trying 127.0.0.1...
    Connected to lfs.
    Escape character is '^]'.

Nun sind wir via Telnet mit dem Port 2023 (/dev/ttyS2) verbunden und können wie gewohnt das dort angeschlossene Gerät administrieren. Der Aufbau der Telnetsession ist natürlich von jedem Betriebssystem und mit einem belibiegen Telnetclient möglich. Eine Kontrolle der bestehenden Verbindungen von ser2net erfolgt über der Controlport (-p 3000). Über eine Telnetseitzung auf den Port 3000 können wir Verbindungsparameter ansehen und verändern.

    [mk] ~ $ telnet localhost 3000
    Trying 127.0.0.1...
    Connected to lfs.
    Escape character is '^]'.
    -> showport
    TCP Port 2023
      enable state: telnet
      timeout: 30         
      connected to (or last connection): 127.0.0.1:32772
      device: /dev/ttyS2                                
      device config: 19200 1STOPBIT 8DATABITS NONE
      device controls: RTSHI DTRHI               
      tcp to device state: waiting input
      device to tcp state: waiting input
      bytes read from TCP: 9            
      bytes written to TCP: 0
      bytes read from device: 0
      bytes written to device: 0

Das Beispiel zeigt die Ausgabe des Kommandos "showport". Damit ist der Aufbau unseres Konsolenserver praktisch abgeschlossen. ser2net kann in die Initscripte eingebunden werden und startet dann automatisch.

Sicherheit

Die seriellen Konsolen vieler Geräte geben dem Benutzer weitreichende Zugriffsrechte. Sicherheit spielt daher eine bedeutende Rolle. ser2net bietet die Möglichkeit des hostbasierenden Zugriffsschutzes per TCP Wrapper. Interessant wäre hier zusätzlich eine Schnittstelle zu RADIUS oder TACACS. Aber ser2net ist ja Open Souce und dadurch flexibel erweiterbar.

Serielle Schnittstellenkarten

Gerade in einem Konsolenserver möchte man viele serielle Schnittstellen haben. Es gibt am Markt eine ganz Reihe von Anbietern für serielle Schnittstellenkarten mit 4, 8 oder 16 Ports.

Perle
PC Bau
Vision Systems
Kolter
Decision Computer

Die genannten Firmen haben alle entsprechende Karten mit Unterstützung von Linux im Programm.

Unser Konsolenserver ist ist betriebsbereit und wartet auf seinen Einsatz. Anregungen und Erfahrungsberichte per Mail oder über das Feedbackformular sind mir jederzeit willkommen.

 

 
© 2004-2015, network lab - we make your net work - Netzwerkforum
aktualisiert am 22.03.2012