no way to compare when less than two revisions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | netzwerk:netzwerkkonfiguration [2024/03/06 08:41] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Netzwerkkonfiguration ====== | ||
+ | ===== Netplan ===== | ||
+ | Quelle [[https:// | ||
+ | - Netzwerkkonfiguration schreiben (siehe unten) | ||
+ | - Konfiguration aktivieren <code bash> | ||
+ | ''/ | ||
+ | * DHCP < | ||
+ | ethernets: | ||
+ | enp2s0: | ||
+ | dhcp4: true | ||
+ | version: 2</ | ||
+ | * Statische IP < | ||
+ | version: 2 | ||
+ | renderer: networkd | ||
+ | ethernets: | ||
+ | eth0: | ||
+ | addresses: | ||
+ | - 10.10.10.2/ | ||
+ | dhcp4: no | ||
+ | gateway4: 10.10.10.1 | ||
+ | nameservers: | ||
+ | addresses: [10.10.10.1, | ||
+ | | ||
+ | - mydomain | ||
+ | - otherdomain</ | ||
+ | * Netzwerkrouten < | ||
+ | version: 2 | ||
+ | renderer: networkd | ||
+ | ethernets: | ||
+ | enp3s0: | ||
+ | ... | ||
+ | ... | ||
+ | | ||
+ | - to: 0.0.0.0/0 | ||
+ | via: 9.0.0.1 | ||
+ | | ||
+ | - to: 0.0.0.0/0 | ||
+ | via: 10.0.0.1 | ||
+ | | ||
+ | - to: 0.0.0.0/0 | ||
+ | via: 11.0.0.1 | ||
+ | | ||
+ | * Bridges < | ||
+ | version: 2 | ||
+ | renderer: networkd | ||
+ | ethernets: | ||
+ | enp3s0: | ||
+ | ... | ||
+ | ... | ||
+ | | ||
+ | br0: | ||
+ | dhcp4: yes | ||
+ | interfaces: | ||
+ | - enp3s0</ | ||
+ | * VLAN < | ||
+ | version: 2 | ||
+ | renderer: networkd | ||
+ | ethernets: | ||
+ | mainif: | ||
+ | match: | ||
+ | macaddress: " | ||
+ | set-name: mainif | ||
+ | addresses: [ " | ||
+ | gateway4: 10.3.0.1 | ||
+ | nameservers: | ||
+ | addresses: [ " | ||
+ | search: [ example.com ] | ||
+ | vlans: | ||
+ | vlan15: | ||
+ | id: 15 | ||
+ | link: mainif | ||
+ | addresses: [ " | ||
+ | vlan10: | ||
+ | id: 10 | ||
+ | link: mainif | ||
+ | addresses: [ " | ||
+ | nameservers: | ||
+ | addresses: [ " | ||
+ | search: [ domain1.example.com, | ||
+ | * WLAN < | ||
+ | version: 2 | ||
+ | renderer: networkd | ||
+ | wifis: | ||
+ | wlp2s0b1: | ||
+ | dhcp4: no | ||
+ | dhcp6: no | ||
+ | addresses: [192.168.0.21/ | ||
+ | gateway4: 192.168.0.1 | ||
+ | nameservers: | ||
+ | addresses: [192.168.0.1, | ||
+ | access-points: | ||
+ | " | ||
+ | password: " | ||
+ | |||
+ | ===== per Befehl " | ||
+ | Nützeliche Befehle: | ||
+ | * IP Adresse setzen/ | ||
+ | * Netzwerkkarte ein-/ | ||
+ | * Netzwerkrouten anzeigen <code bash>ip route show</ | ||
+ | * Stadardgateway setzen < | ||
+ | * Netzwerkroute setzen/ | ||
+ | |||
+ | ===== Interfaces ===== | ||
+ | Die Datei ''/ | ||
+ | |||
+ | Hier ein Beispiel: | ||
+ | |||
+ | <code bash># The loopback network interface | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | |||
+ | # The primary network interface | ||
+ | auto eth1 | ||
+ | #iface eth1 inet dhcp | ||
+ | iface eth1 inet static | ||
+ | address | ||
+ | netmask | ||
+ | broadcast | ||
+ | gateway | ||
+ | dns-nameservers <IP1> <IP2> | ||
+ | dns-search | ||
+ | # emergency fallback addresses | ||
+ | # post-up | ||
+ | # pre-down | ||
+ | |||
+ | auto eth0 | ||
+ | iface eth0 inet manual | ||
+ | |||
+ | iface wlan0 inet static | ||
+ | |||
+ | #Bridge | ||
+ | auto br0 | ||
+ | iface br0 inet static | ||
+ | # gateway <IP> | ||
+ | bridge_ports eth1 wlan0 | ||
+ | bridge_fd 5 | ||
+ | bridge_stp no # unter Umständen auf ' | ||
+ | address <IP> | ||
+ | netmask < | ||
+ | |||
+ | auto wlan0_1_rename | ||
+ | iface wlan0_1_rename inet static | ||
+ | address | ||
+ | netmask | ||
+ | broadcast | ||
+ | |||
+ | # Kommando vor Netzwerkarteneinstellungen ausführen | ||
+ | pre-up < | ||
+ | |||
+ | # Kommando starten | ||
+ | up < | ||
+ | |||
+ | # Kommando nach Netzwerkkarteneinstellungen ausführen | ||
+ | post-up < | ||
+ | |||
+ | # | ||
+ | auto dsl-provider | ||
+ | iface dsl-provider inet ppp | ||
+ | pre-up / | ||
+ | provider dsl-provider | ||
+ | |||
+ | # DynDNS Client starten | ||
+ | up / | ||
+ | |||
+ | ===== Netzwerk neustarten ===== | ||
+ | <code bash> | ||
+ | |||
+ | ===== DNS registrieren ===== | ||
+ | Ein Linux Client registriert sich beim Booten an dem, in der Netzwerkkonfiguration angegebenen, | ||
+ | Wenn dies ein lokaler DNS-Server ist (z. B. Router) dann wird die Registrierung angenommen. | ||
+ | An diesem Beispiel sieht man, wie sich ein Linux-Client an einem DNS-Server erneut registrieren kann: | ||
+ | <code bash> | ||
+ | update delete < | ||
+ | update add < | ||
+ | send</ | ||
+ | |||
+ | In der Datei ''/ | ||
+ | |||
+ | < | ||
+ | send fqdn.encoded on; | ||
+ | send fqdn.server-update on;</ | ||
+ | |||
+ | Nachdem das gespeichert wurde, kann man sich so eine neue IP holen und nachsehen ob der DNS-Server aktualisiert wurde. | ||
+ | <code bash> | ||
+ | sudo dhclient</ | ||
+ | |||
+ | ==== IP Adresse ausgeben und DNS Eintrag aktualisieren ==== | ||
+ | Hier eine Alternative zum o.g. Verfahren über die '' | ||
+ | Man kann das u.a. Script z.B. in der Datei ''/ | ||
+ | < | ||
+ | |||
+ | |||
+ | DNSSVR=$(dig +noall +answer +short $(dig +noall +answer +short < | ||
+ | |||
+ | DEV=$(ip route get ${DNSSVR}|awk ' | ||
+ | |||
+ | IPCIDR=$(ip a show dev ${DEV}|grep -w ' | ||
+ | IP=$(echo " | ||
+ | |||
+ | echo -e " | ||
+ | |||
+ | ===== DNS flush ===== | ||
+ | Zuerst alles Caches vom Resolver leeren (gibt keine Ausgaben auf der Konsole). | ||
+ | * ab Ubunbu 22.04 <code bash> | ||
+ | * bis Ubuntu 20.04 <code bash> | ||
+ | Danach kann man sich die Statistiken anzeigen lassen und sehen, dass alles genullt wurde. | ||
+ | * ab Ubunbu 22.04 <code bash> | ||
+ | * bis Ubuntu 20.04 <code bash> | ||
+ | |||
+ | Die Anzeige auf diese ankommt ist < | ||
+ | |||
+ | ===== Networkteaming / -bonding ===== | ||
+ | Quelle: [[https:// | ||
+ | Um eine Ausfallsicherheit bzw. Bandbreitenerhöhung herzustellen, | ||
+ | Dies kann mit dem Programm '' | ||
+ | <code bash> | ||
+ | |||
+ | ==== Vorbereitung ==== | ||
+ | Nachdem man sicher ist, dass der Kernel Bonding kann | ||
+ | <code bash> | ||
+ | schaut man, ob es Netzwerkkarten gibt die sich dafür eignen (diese müssen angeschlossen und in Betrieb sein, sprich eine IP haben und erreichbar sein) | ||
+ | <code bash> | ||
+ | <note important> | ||
+ | |||
+ | ==== Bonding ==== | ||
+ | Zunächst schaltet man die Netzwerkkarten ab, welche zusammengefasst werden sollen. | ||
+ | <code bash> | ||
+ | ifdown enp1s0 | ||
+ | ...</ | ||
+ | Nun konfiguriert man das Bonding in der ''/ | ||
+ | < | ||
+ | auto eth0 | ||
+ | iface eth0 inet manual | ||
+ | bond-master bond0 | ||
+ | bond-primary eth0 | ||
+ | |||
+ | #eth1 ditto, thus creating a 2-link bond. | ||
+ | auto eth1 | ||
+ | iface eth1 inet manual | ||
+ | bond-master bond0 | ||
+ | |||
+ | auto bond0 | ||
+ | iface bond0 inet static | ||
+ | address 10.0.0.10 | ||
+ | netmask 255.255.255.0 | ||
+ | network 10.0.0.0 | ||
+ | broadcast 10.0.0.255 | ||
+ | gateway 10.0.0.1 | ||
+ | dns-nameservers 10.0.0.1 | ||
+ | bond-slaves eth0 eth1 | ||
+ | bond-mode 0 | ||
+ | bond-miimon 100 | ||
+ | bond-updelay 200 | ||
+ | bond-downdelay 200</ | ||
+ | * bond-slaves: | ||
+ | * bond-mode: 0 bis 6 oder Names des Modus, in dem der bonding-Treiber arbeiten soll. | ||
+ | * bond-miimon: | ||
+ | * bond-updelay: | ||
+ | * bond-downdelay: | ||
+ | Nun lässt man das Bonding-Kernelmodul beim Booten automatisch laden. Dazu trägt man folgendes in die Datei ''/ | ||
+ | < | ||
+ | Nach einem Reboot sollte es nur noch die eine Netzwerkkarte namens " | ||
+ | Ohne Reboot kann man den Bond wie gewohnt starten: | ||
+ | <code bash> | ||
+ | ifdown bond0</ | ||
+ | |||
+ | ==== Bonding Modi ==== | ||
+ | Folgende Bonding Modi gibt es: | ||
+ | |||
+ | ^ Modus ^ Bezeichnung ^ Zweck ^ Beschreibung ^ | ||
+ | | 0 | balance-rr | Lastverteilung & Ausfallsicherheit | Die genutzte Netzwerkschnittstelle wird im Round-Robin-Verfahren festgelegt, das heißt die verfügbaren Schnittstellen werden in Senderichtung wechselweise genutzt. In Empfangsrichtung kann max. die Geschwindigkeit einer einzelnen Schnittstelle erreicht werden - je mehr Teilnehmer, umso mehr Upload-Gesamtbandbreite, | ||
+ | | 1 | active-backup | Ausfallsicherheit | Nur eine Schnittstelle ist aktiv, im Fehlerfalle wird eine der anderen im Verbund genutzt. die Netzwerkkarten können über verschiedene Switches angebunden werden. | | ||
+ | | 2 | balance-xor | Lastverteilung & Ausfallsicherheit | Es wird für jede Gegenstelle im Netzwerk eine zu nutzende Netzwerkschnittstelle zugewiesen, die Zuordnung geschieht über den Modulo der Division zwischen der Formel (Quell-MAC-Adresse XOR Ziel-MAC-Adresse) und der Anzahl der Slave-Schnittstellen. | | ||
+ | | 3 | broadcast | Ausfallsicherheit | Daten werden auf allen Netzwerkschnittstellen gesendet. Die Nutzung mehrerer Switches ist möglich. | | ||
+ | | 4 | 802.3ad | Lastverteilung & Ausfallsicherheit | 802.3ad ist ein Standard der IEEE, der die Bündelung mehrerer Schnittstellen mit gleichen Übertragungseinstellungen (Geschwindigkeit und Duplex-Einstellungen) erlaubt, um eine höhere Bandbreite zu erhalten. Es kann nur ein Switch verwendet werden, dieser muss 802.3ad unterstützen. ethtool oder mii-tool wird benötigt. | | ||
+ | | 5 | balance-tlb | Lastverteilung | Es wird für jede Gegenstelle im Netzwerk eine zu nutzende Netzwerkschnittstelle zugewiesen. Das Verfahren hierzu ist jedoch komplexer und effizienter als bei balance-xor. Das Programm ethtool wird benötigt. | | ||
+ | | 6 | balance-alb | Lastverteilung | Erweitertes balance-tlb, | ||
+ | |||
+ | ===== VLAN ===== | ||
+ | Voraussetzungen erfüllen | ||
+ | <code bash> | ||
+ | sudo modprobe 8021q</ | ||
+ | |||
+ | ==== Temporär einrichten ==== | ||
+ | Danach VLAN auf dem Interface konfigurieren | ||
+ | <code bash> | ||
+ | sudo ip addr add 10.0.0.1/24 dev eth1.10 | ||
+ | sudo ip link set up eth1.10</ | ||
+ | |||
+ | ==== Permanent einrichten ==== | ||
+ | <code bash> | ||
+ | |||
+ | nun in der ''/ | ||
+ | < | ||
+ | iface eth1.10 inet static | ||
+ | ... | ||
+ | vlan-raw-device eth1</ | ||
+ | |||
+ | ===== Wake On LAN ===== | ||
+ | Mit dem Wake on LAN (WOL) lässt sich ein PC über die Netzwerkkarte aufwecken. | ||
+ | Man konfiguriert einfach die WOL Einstellungen für das normale Wakeup mit Magic Paketen. | ||
+ | |||
+ | ==== Netzwerkkarte vorbereiten ==== | ||
+ | Mit dem Tool '' | ||
+ | Der folgende Befehl fragt die Netzwerkkarte ab. | ||
+ | <code bash> | ||
+ | Hier achtet man auf die Zeile welche mit '' | ||
+ | Steht hier der Parameter '' | ||
+ | |||
+ | Mit dem Aktivieren der Funktion steht in der Zeile dann ein '' | ||
+ | <code bash> | ||
+ | |||
+ | ==== WOL dauerhaft einschalten ==== | ||
+ | Leider übersteht die o.g. Einstellung den Neustart eines PCs nicht und schaltet sich immer wieder aus. | ||
+ | Per '' | ||
+ | |||
+ | <code bash>vi / | ||
+ | Inhalt: | ||
+ | < | ||
+ | Description=Configure Wake-up on LAN | ||
+ | After=network-online.target | ||
+ | |||
+ | [Service] | ||
+ | Type=oneshot | ||
+ | ExecStart=/ | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=basic.target</ | ||
+ | |||
+ | Danach noch den Service einschalten und den Systemd-Daemon neustarten. | ||
+ | <code bash> | ||
+ | sudo systemctl daemon-reload</ | ||
+ | |||
+ | ==== WOL testen ==== | ||
+ | Mit dem Befehl '' | ||
+ | Das Tool muss vorher installiert werden. | ||
+ | <code bash> | ||
+ | Danach kann man ein Gerät aufwecken | ||
+ | <code bash> | ||
+ | ==== Webserver installierten und einrichten ==== | ||
+ | Mit der u.a. einfachen Webseite kann man das Wake On Lan steuern. | ||
+ | Hier ein Beispiel mit dem '' | ||
+ | |||
+ | <code bash> | ||
+ | Nach der installation, | ||
+ | <code bash> | ||
+ | vi / | ||
+ | Die Zeile mit | ||
+ | < | ||
+ | wie folgt anpassen | ||
+ | < | ||
+ | Ausserdem noch unten folgendes einfügen: | ||
+ | < | ||
+ | Danach den Webserver neustarten | ||
+ | <code bash> | ||
+ | |||
+ | ==== Website erstellen ==== | ||
+ | <code bash> | ||
+ | vi / | ||
+ | Inhalt: | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | <code bash>vi / | ||
+ | Inhalt: | ||
+ | < | ||
+ | |||
+ | use Socket; | ||
+ | use CGI; | ||
+ | my $cgi = new CGI; | ||
+ | use CGI::Carp qw(fatalsToBrowser); | ||
+ | |||
+ | $cgi-> | ||
+ | |||
+ | print $cgi-> | ||
+ | $cgi-> | ||
+ | $cgi-> | ||
+ | wake($cgi-> | ||
+ | $cgi-> | ||
+ | |||
+ | sub wake | ||
+ | { | ||
+ | my $hwaddr | ||
+ | my $ipaddr | ||
+ | my $port = shift || getservbyname(' | ||
+ | |||
+ | my ($raddr, $them, $proto); | ||
+ | my ($hwaddr_re, | ||
+ | |||
+ | # Validate hardware address (ethernet address) | ||
+ | |||
+ | $hwaddr_re = join(':', | ||
+ | if ($hwaddr !~ m/ | ||
+ | return $cgi-> | ||
+ | } | ||
+ | |||
+ | # Generate magic sequence | ||
+ | |||
+ | foreach (split /:/, $hwaddr) { | ||
+ | $pkt .= chr(hex($_)); | ||
+ | } | ||
+ | $pkt = chr(0xFF) x 6 . $pkt x 16; | ||
+ | |||
+ | # Allocate socket and send packet | ||
+ | |||
+ | $raddr = gethostbyname($ipaddr); | ||
+ | $them = pack_sockaddr_in($port, | ||
+ | $proto = getprotobyname(' | ||
+ | |||
+ | if(!socket(S, | ||
+ | return $cgi-> | ||
+ | } | ||
+ | if(!setsockopt(S, | ||
+ | return $cgi-> | ||
+ | } | ||
+ | |||
+ | if(!send(S, $pkt, 0, $them)) { | ||
+ | return $cgi-> | ||
+ | } | ||
+ | | ||
+ | close S; | ||
+ | return $cgi-> | ||
+ | <a href='# | ||
+ | }</ | ||
+ | Danach das Perl-Script ausführbar machen mit | ||
+ | <code bash> | ||
+ | |||
+ | ==== Website testen ==== | ||
+ | Nun kann man die Webseite öffnen [[http://< | ||
+ | Hier gibt man die benötigten Angaben ein und klickt auf absenden. | ||
+ | |||
+ | Man kann das " | ||
+ | [[http://< |