[[Vorlage(Archiviert, )]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:chmod: Zugriffsrechte von Dateien ändern] [:Editor: Einen Editor öffnen] [:sudo: Root-Rechte] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Wiki/Icons/Oxygen/network-wired.png, 48, align=left)]] [:PC-Direktverbindung_per_Netzwerk-Kabel: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]: {{{#!vorlage befehl touch link_local.sh chmod +x link_local.sh }}} Anschließend kann das Skript mittels Editor [3] bearbeitet und folgender Inhalt eingefügt werden. {{{#!code bash #!/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: {{{#!vorlage befehl ./link_local.sh -h }}} * Startet die Konfiguration: {{{#!vorlage befehl ./link_local.sh -start }}} * Beendet die Konfiguration: {{{#!vorlage befehl ./link_local.sh -stop }}} * Beendet die Konfiguration (wie `-stop`): {{{#!vorlage befehl ./link_local.sh }}} Nach Ausführung wird die Systemkonfiguration angezeigt. Ein Beispiel mit Standardwerten: {{{#!vorlage Befehl ./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 [wikipedia:Crosskabel:] für die Verbindung verwendet werden. Weitere Hinweise dazu in [:PC-Direktverbindung per Netzwerk-Kabel:]. = Links = * [:Shell/Bash-Skripting-Guide für Anfänger:] * [:Heimnetzwerk:] {Übersicht} Übersichtsartikel * [:Instant_Webserver:] - einen Browser für Up- und Downloads verwenden * [:rsync#Grafische-Benutzeroberflaeche:] - Daten abgleichen (siehe auch [:Datensicherung#Programme:]) * [:Internetverbindungsfreigabe:] - Konfigurationsmöglichkeiten zur gemeinsamen Nutzung des Internetzugangs * [post:5553487:Skript] zur einfachen automatischen Vernetzung zwischen Ubuntu- und Windows-Systemen #tag: Netzwerk, Installation