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:
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.
Gibt eine kurze Hilfe zur Syntax aus:
./link_local.sh -h
Startet die Konfiguration:
./link_local.sh -start
Beendet die Konfiguration:
./link_local.sh -stop
Beendet die Konfiguration (wie
-stop
):./link_local.sh
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.
Links¶
Heimnetzwerk Übersichtsartikel
Instant Webserver - einen Browser für Up- und Downloads verwenden
rsync (Abschnitt „Grafische-Benutzeroberflaeche“) - Daten abgleichen (siehe auch Datensicherung (Abschnitt „Programme“))
Internetverbindungsfreigabe - Konfigurationsmöglichkeiten zur gemeinsamen Nutzung des Internetzugangs
Skript zur einfachen automatischen Vernetzung zwischen Ubuntu- und Windows-Systemen