Archiv/Ethernet-Crossover-Verbindung ohne Netzwerkmanager

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Ein Terminal öffnen

  2. Zugriffsrechte von Dateien ändern

  3. Einen Editor öffnen

  4. Root-Rechte

Inhaltsverzeichnis
  1. Skript anlegen
  2. Konfiguration
    1. IP-Adresskonfiguration
    2. Network-Manager
    3. Firewall konfigurieren
  3. Skript ausführen
  4. Links

Wiki/Icons/Oxygen/network-wired.png

Ethernet-Crossover-Verbindungen mit dem Network-Manager und Avahi sind manchmal für die Kommunikation mit bestimmten Geräten wie IP-Kameras schlecht konfigurierbar. Auch die Kommunikation mit Windows-Rechnern funktioniert unter Umständen besser, wenn man den Netzwerk-Manager abschaltet und auf dem Linux-Host eine statische IP-Adresse setzt sowie den systeminternen DHCP-Server (dnsmasq_base) entsprechend konfiguriert.

Die IP-Adresse der Crossover-Verbindung bezieht das Client-System (Windows-PC, IP-Cam usw.) dann automatisch über dnsmasq. So muss auf dem Client keine manuelle IP-Konfiguration vorgenommen werden, was bei einigen Geräten auch nicht möglich ist.

Skript anlegen

Anlegen und ausführbar machen des Skripts über Terminal [1][2]:

touch link_local.sh
chmod +x link_local.sh   

Anschließend kann das Skript mittels Editor [3] bearbeitet und folgender Inhalt eingefügt werden.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/bin/bash
## Instant Link Local Modus
## elektronenblitz63 ubuntuusers.de 2013
## published under GPL v3
## Version 0.0.2 / 27. April 2013

## LAN statisch 
laniface=eth1
laddress=192.168.3.1
lbroadcast=192.168.3.255
lnetmask=255.255.255.0
lgateway=192.168.3.1

# Basisadresse DHCP-Adresspool (WLAN-IP + X)
# Adresspool / Anzahl Adressen / hier nur eine
# IP-Adresse des Client ist hier 192.168.3.2
lanbaseip=1
ipaddresses=2

# Lease-Time
leasetime=infinite

## Pause in Sekunden für Konfigurationsparameter
## Vorgabewert 2
configdelay=2

#### Ende freie Variablen
##

## be root if not
test `id -u` -eq 0 || exec sudo "$0" "$@"

## Prüfung der Konfiguration
if [ "$1" != "-stop" ]; then

##  prüfe Basiskonfiguration Schnittstellen 
 check_laniface="`ifconfig $laniface | grep Link | awk {'print $1'}`"

if [ "$check_laniface" = $laniface ]; then
echo "LAN-Interface" $laniface "gefunden. Setze Konfiguration fort."

else
 echo "LAN-Interface" $laniface "nicht gefunden! Breche Konfiguration ab."
  exit 0
fi
 fi

echo "Link Local Netzwerkkonfiguration"
 echo "Starte gewählte Konfiguration ..."
  sleep $configdelay

## aut. Adressberechnung DHCP-Range für dnsmasq-base
## gemäß Vorgabe LAN-Schnittstelle

ipaddresses=$[$ipaddresses+$lanbaseip]
 baseendaddr="`echo $laddress | tr -s . " " | awk {'print $4'}`"
  basestartaddr="`echo $laddress | tr -s . " " | awk {'print $1,$2,$3'} | tr -s " " .`"
   endaddr="$basestartaddr""."$[$startaddr+$ipaddresses]
    startaddr="$basestartaddr""."$[$baseendaddr+$lanbaseip]
     ipaddresses=$[$ipaddresses-1]

if [ "$1" != "-start" ]; then
echo "Stoppe alle Dienste und beende die Verbindungen ..."

defgw="`route -n | grep UG | awk {'print $2'}`"
 /sbin/route del default gw $defgw $laniface
  echo '' | tee /etc/resolv.conf
 
   /sbin/ifconfig $laniface down
     /usr/bin/killall dnsmasq
      sleep $configdelay
fi

## Restart Network-Manager - beende Netzwerkkonfiguration
if [ "$1" = "-stop" ]; then
 echo
  echo "reaktiviere Network-Manager."
   service network-manager start
    sleep $configdelay
     service network-manager restart

echo "Konfiguration beendet."
 exit
  fi

# Konfiguration LAN
echo "Beende Network-Manager"
 service network-manager stop
  echo -e "Starte benötigte Dienste, und Verbindungen ...\n"
   sleep $configdelay

sleep $configdelay

  echo "Starte statische LAN-Konfiguration ..."
   /sbin/ifconfig $laniface down
    /sbin/ifconfig $laniface $laddress broadcast $lbroadcast netmask $lnetmask
     sleep $configdelay
      /sbin/ifconfig $laniface up

## vorhandene Route ggf. löschen
 echo "Lösche Default-Gateway ..."
  defgw="`route -n | grep UG | awk {'print $2'}`"
   /sbin/route del default gw $defgw $laniface

echo
 echo "Setze Gateway und Route ..."
  /sbin/route add default gw $lgateway $laniface
   sleep $configdelay

## dnsmasq starten
echo "Starte dnsmasq"
 echo -e "DHCP-Range dnsmasq-base - Startadresse: $startaddr Endadresse: $endaddr\n"

 /usr/sbin/dnsmasq -i $laniface -I eth1 -F $startaddr,$endaddr,$leasetime

## Ausgabe der Konfiguration. Einstellungen der Schnittstellen,
## Routingtabelle und DNS prüfen

echo "Aktuelle Konfiguration ..."

 echo -e "Systemkonfiguration: /etc/resolv.conf\n"
  /bin/cat /etc/resolv.conf

 echo -e "Systemkonfiguration: Routingtabelle\n"
  /sbin/route -n

 echo "Konfiguration LAN:"
  /sbin/ifconfig $laniface | egrep 'Link|inet Adresse'

echo -e "Basiskonfiguration abgeschlossen.\n"
 echo "Netzwerkverbindung zwischen den Rechnern herstellen."
  exit 0

Konfiguration

Die nachfolgend beschriebenen Einstellungen können im entsprechenden Abschnitt des Skripts festgelegt werden.

## Variablen
...
## Ende freie Variablen

IP-Adresskonfiguration

Die verwendete Schnittstelle (Basiseinstellung: eth0) und die gewünschte IP-Adresse sind bei Bedarf im Skript anzupassen. In der Voreinstellung ist der IP-Adresspool von dnsmasq auf eine IP-Adresse begrenzt, so dass dem angeschlossenen Client immer eine bestimmte Adresse zugewiesen wird.

Schließt man mehrere Clients über einen Ethernet-Switch an, so ist der IP-Adresspool entsprechend zu vergrößern, damit alle angeschlossenen Geräte mit einer Adresse versorgt werden können. Es muss nur die Anzahl der gewünschten Adressen angegeben werden, das Skript berechnet automatisch die sich daraus ergebenden IP-Adressen und konfiguriert dnsmasq entsprechend.

Network-Manager

Das Skript deaktiviert vorübergehend den Network-Manager. Zuvor bestehende Verbindungen werden dabei getrennt.

Firewall konfigurieren

Ist eine lokale Firewall (ufw) aktiv, so muss der entsprechende Port 67 freigeschaltet werden, um dnsmasq nicht zu blockieren.

Skript ausführen

Das Skript kann nun über ein Terminalfenster gestartet werden. Verschiedene Startparameter sind möglich. Das Skript muss mit Root-Rechten [4] gestartet werden, prüft dies und fragt das entsprechende Kennwort automatisch ab.

Nach Ausführung wird die Systemkonfiguration angezeigt. Ein Beispiel mit Standardwerten:

./link_local.sh -start 
stoppe alle Dienste, und Verbindungen
Ethernet-Schnittstelle initialisieren
eth0 192.168.3.1 broadcast 192.168.3.255 netmask 255.255.255.0

starte DHCP-Server
DHCP-Range dnsmasq-base - Startadresse: 192.168.3.2 Endadresse: 192.168.3.2

Dem Client wird die IP-Adresse 192.168.3.2 zugewiesen

Kernel-IP-Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

Ethernet-Konfiguration:
eth0      Link encap:Ethernet  Hardware Adresse 00:24:21:0e:8f:4a  
          inet Adresse:192.168.3.1  Bcast:192.168.3.255  Maske:255.255.255.0

Konfiguraton beendet, Client über Ethernet anschließen ...

Wurde die Netzwerkverbindung etabliert, kann man sich nun praktischen Dingen zuwenden, z.B. über SSH mit einem Raspberry Pi verbinden oder eine Netzwerkkamera konfigurieren.

Unter bestimmten Voraussetzungen muss dazu ein Crosskabel für die Verbindung verwendet werden. Weitere Hinweise dazu in PC-Direktverbindung per Netzwerk-Kabel.