Netzwerk-Konfiguration mit ``iproute2`` ======================================= Das Toolset ``iproute2`` zählt zum Standard-Umfang jedes modernen Linux-Systems und umfasst folgende Programme: ``ip`` ``ss`` ``tc`` ``ss`` steht für Socket Statistics ``tc`` traffic control ``arpd`` arp demon Diese Programme ersetzen die auf alten Systemen häufig genutzten Programme ``ifconfig``, ``netstat``, ``arp``, ``route`` und ``brctl``. Optionen: ``-s`` Statistics ``-d`` Details ``-h`` Human Readable ``-f`` Family Linux-Version anzeigen: ``cat /etc-os-release`` Hilfe zu ``ip``: ``ip help`` Formale Syntax: .. code-block:: sh ip [OPTIONS] OBJECT {COMMAND} ``ip link`` gibt Übersicht über Netzwerk-Schnittstellen ("Interfaces") aus. Nur die Schnittstellen (Interface) (beispielsweise ``lo``), aber mehr Details: ``ip -d link show lo`` Eingabe von ``ip link TAB`` gibt an, welche Funktionen hierfür zur Verfügung stehen. ``ip link add|delete|set|show|help`` ``ip link set lo`` und ``Tab``-Taste: gibt wiederum an, was man hier alles machen kann: Beispielsweise ``up|down`` schaltet Interface an|aus, ``address`` ändert die Adresse, ``broatcast`` die Broatcast-Adresse, ``name`` den Namen. .. todo Was ist eine MTU? Mit ``ip link set`` können Eigenschaften für die Schnittstellen gesetzt werden: Neue Schnittstelle hinzufügen; Wenn man sich nicht sicher ist: ``ip link help add`` Beispiel: ``ip link add test0 type dummy`` Test, ob neues Interface da ist: ``ip link show`` Aktivieren: ``ip link test0 up`` ip help gibt übersicht über verschiedene Teil-Programme Vielleicht wichtiger: ``ip address`` Abbreviations: ``ip a`` steht für ``ip address`` Nur IPv4-Adressen anzeigen: ``ip -4 a show``; mit ``-6`` werden nur IPv6-Adressen angezeigt. ``ip -s a show``: ``-s`` steht für "statistics": Wieviele Pakete wurdem empfangen, wieviele verschickt, wieviele Fehler sind aufgetreten? ``ip route`` gibt Informationen über das Routing. ``ip route get 8.8.8.8`` ping www.bbc.com -> zeigt ip-adresse an! dann: ``ip route get 151.101.32.81`` ``ip route add 20.0.0.0/8 via 10.0.0.10`` Tunnel-interfaces generieren: ``ip tunnel add mode gre remote 19.18.17.3 local 19.18.17.1 tn0`` ``ip neighbour`` (kurz ``ip n``) ist ähnlich wie ``arp -a``; zeigt an, welche Adressen lokal zu finden sind und welche Mac-Adressen damit assoziiert sind. (Scheint sich nur um den eigenen Rechner zu handeln sowie das default gateway) ``ip tcpmetrics`` Alter der Verbindung, rtt ist runthrough-time ``ip monitor`` gibt ``ip link`` kontinuierlich aus, so dass Änderungen live beobachtet werden können. .. todo was ist multicast address? ``tun/tap`` interessant für vpns? tun ist network layer (packets), tap ist layer 2 (frames) ``netconf`` network configuration monitoring zeigt forwarding an forwarding rp_filter mc_forwarding proxy_neighbour ``ip fou`` Foo-over-UDP receive port configuration ``ip rule``: Policy Routing ; Ergänzung zu ``ip route`` Kern: ``ip`` für IP-Konfigurationen ``tc`` für Traffic Control ``ip`` unterscheidet zwischen Links und Adressen. Wichtige Anweisungen: ``ip add show`` ``ip link show`` ``ip route show`` ``ip route show table main`` ``ip rule show`` MTU: Maximal Transfer Unit IP4: von 1.1.1.1 bis 255.255.255.255 Genügt nicht für die gesamte Menschheit, daher NAT: Nur eine IP für ein lokales Netzwerk, beispielsweise 24.244.91.19 Im lokalen Netzwerk haben alle Geräte Adressen in folgender Form: 192.168.X.X Die Adresse 192.168.0.1 ist für den Router reserviert. Geht ein Request von einem lokalen Teilnehmer an einen Server eines entfernten Netzwerkes aus, so kommuniziert der Router über die IP-Adresse mit dem Webprovider, der die Anfrage wiederum an den Server weiterleitet; dieser bekommt also nur die IP-Adresse angezeigt, die der Webprovider dem Router zugewiesen hat. Die Antwort des Servers wird in umgekehrter Richtung wieder an den Router unter dessen IP-Adresse geleitet; dieser schickt die Informationen in das lokale Netz (Namespace 192.168.X.X), beziehungsweise konkret an das "Device", von dem die Anfrage kam. 127.0.0.1 Synonym für localhost. ping: gucken, ob Antwort kommt. ping google.com lo: localhost interface; virtuelle adresse! Ip6: fe00 fe80::de1f:e5c4:3764:aa31/64 .. Deimeke S.669 ``ip`` dient auch zum Auslesen und Setzen der Routen und löst daher das Tool ``route`` ab: Routing-Tabellen werden mit ``ip route`` angesprochen. .. code-block:: sh root@abacus:~# ip route show 192.168.2.0/24 dev eth0 proto kernel scope link 169.254.0.0/16 dev eth0 scope link metric 1000 default via 192.168.2.1 dev eth0 proto static src 192.168.2.10 metric 1 Auch das arp -Kommando hat einen Nachfolger -- ``ip neighbour``. .. code-block:: sh root@abacus:~# ip neighbour show 192.168.2.1 dev eth0 lladdr 00:23:08:f9:81:ac REACHABLE Die Unterschiede der Ausgabe zwischen dem alten und dem neuen Toolset sind erheblich. "iproute2" im Detail Die Syntax ist im Gegensatz zu den altbekannten Tools deutlich komplexer. Ip wird immer gefolgt von dem Objekt aufgerufen, mit dem man arbeiten möchte. Beispielsweise nutzen Sie ip address zum Konfigurieren der Adresse oder ip route , wenn die Routing-Tabelle manipuliert werden soll. Je nach Objekt können dann unterschiedliche Kommandos ausge- führt werden. Wird kein Kommando angegeben, so wird einfach show oder list ausgeführt. Sämtliche Kommandos lassen sich übrigens abkürzen. Solange eine Anweisung eindeutig von anderen unterscheidbar ist, kann man einzelne Buchstaben weglassen. Folgende Kom- mandos führen alle zum gleichen Ziel: .. code-block:: sh ip address show ip add sh ip a s ip a Informationen über Links können mit ``ip link show DEVICE`` ausgegeben werden. In der ersten Zeile sehen wir die Nummer des Interfaces 2 , gefolgt von dem eindeuti- gen Namen eth0 . Danach folgen diverse Flags, die die Fähigkeiten und den Zustand der Schnittstelle beschreiben. Die wichtigsten Flags sind: * ``UP`` Die Schnittstelle ist aktiviert. * ``LOWER_UP`` und ``NO-CARRIER`` Dieses Flag zeigt an, ob eine Verbindung auf Ethernet-Ebene besteht. Die Flags werden nur angezeigt, wenn das Interface auch aktiviert ist. * ``BROADCAST`` und ``MULTICAST`` Das Interface beherrscht Broad- und Multicast. * ``SLAVE`` Die Schnittstelle gehört zu einem Bonding, also zu einer Bündelung mehrerer Links. * ``POINTOPOINT`` Es handelt sich um eine Punkt-zu-Punkt-Verbindung. Das Netzwerk besteht nur aus zwei Knoten. Jeder Verkehr landet automatisch bei der Gegenstelle. Nach den Flags wird die MTU-Größe angezeigt, die Maximum Transmission Unit. Sie gibt an, wie groß die maximale Paketgröße auf der Sicherungsschicht ist. Bei Ethernet sind das normalerweise 1.500 Byte. Das Loopback-Interface arbeitet hingegen mit 16.436 Byte, weil es als virtuelles Interface nicht den Beschränkungen von Ethernet unterliegt. Danach folgt die Angabe der Queuing Discipline, des Algorithmus für das Handling der Pakete und der Queue-Länge. In der zweiten Zeile stehen Informationen über den Linktyp und linkspezifische Informationen. Bei Ethernet sind das die MAC-Adresse und die Ethernet-Broadcast-Adresse. Zusätzliche Paketstatistiken rund um die Verbindungen lassen sich mit der Option -statistics bzw. -s anzeigen. Die Option kann mehrfach angegeben werden, um den Detailgrad zu erhöhen Die Parameter von links werden mit ``ip link set DEVICE`` geändert. Sie können aber nicht nur die Schnittstellen aktivieren und deaktivieren, sondern auch Flags, MAC-Adressen oder sogar Devicenamen ändern. Interface deaktivieren und aktivieren Aktivieren und Deaktivieren einer Netzwerkkarte: .. code-block:: sh root@abacus:~# ip link set eth0 down root@abacus:~# ip link set eth0 up Neue MAC-Adresse setzen: .. code-block:: sh root@abacus:~# ip link set eth0 address 00:26:18:81:1d:65 Interfacenamen ändern: .. code-block:: sh root@abacus:~# ip link set eth1 name extern root@abacus:~# ip link show extern 6: extern: mtu 1500 qdisc noqueue state DOWN link/ether 4a:59:60:40:e6:95 brd ff:ff:ff:ff:ff:ff Das Ändern der Namen kann bei Setups mit vielen Netzwerkkarten durchaus Sinn machen, beispielsweise bei Firewalls, um genau zu zeigen, welches Interface wohin führt ( intern, extern, dmz, management, heartbeat, vpn ... ). Notizen ------- Replacement for ``netstat`` is ``ss``. Replacement for ``netstat -r`` is ``ip route``. Replacement for ``netstat -i`` is ``ip -s link``. Replacement for ``netstat -g`` is ``ip maddr``. ``ifconfig`` should also probably be replaced with commands like ``ip a``. Hosts-File: ``/etc/hosts`` Ein DNS-Server verknüpft Domain-Namen mit IP-Adressen; die Datei ``/etc/hosts`` kann ebenfalls als eine Art interner DNS-Dienst angesehen werden. Wenn eine Abfrage im Browser stattfindet, wird zunächst die ``/etc/hosts``-File auf passende Eintarge überprüft, und nur, falls es dort keinen Treffer gibt, wird die Abfrage über den Router und Webprovider an einen externen DNS-Server weitergeleitet. IP-Adressen ausfindig machen: www.network-tools.com Dort kann beispielsweise auch als Domain-Name ``google.com`` eingegeben werden; die Adresse wird dann im rechten Teilfenster oben angezeigt. ``/etc/hosts``: Erste Spalte: IP-Adresse, auf die wir routen wollen Zweite Spalte: Domain-Name, der damit verknüpft werden soll Dritte Spalte (optional): Alias Achtung: Man kann in der ``/etc/hosts`` auch Domain-Namen mit komplett anderen IP-Adressen verbinden! (So dass beispielsweise ``google.com`` auf die Adresse von Joe's Pizza zeigt oder so ähnlich). Hostnamen festlegen (ursprügnlich: Voltron): .. code-block:: sh sudo hostnamectl set-hostname Megazord Auch in der ``/etc/hosts`` muss noch der Hostname angepasst werden. Dann: .. code-block:: sh sudo service hostname restart Der Hostname leitet bei Angabe dieses Namens im Browser zum Basis-Verzeichnis des Localhost-Webserver weiter. Traceroute ---------- Wird nach Installation des ``traceroute``-Pakets mittels ``traceroute webadresse`` aufgerufen; zeigt an, welche Stationen durchlaufen werden, um zur Zieladresse zu gelangen. Erster Eintrag: Adresse des Routers, und Zeit, um dorthin zu gelangen. Folgende Einträge: Einzelne Server, mit denen bis zum Erreichen der Zieladresse kommuniziert wird. Bei Domain-Namen wird die zugehörige IP-Adresse in runden Klammern dahinter angegeben. Nmap ---- Network Mapper; Funktionen: Zeigt an, welche Devices im Netzwerk existieren, auf welche IP-Adressen zugegriffen wird und welche Services jede einzelne Maschine bietet. Hat der eigene Rechner beispielsweise die lokale Adresse ``192.168.2.101``, so kann man folgendes aufrufen: .. code-block:: sh nmap 192.168.2.101 Man bekommt dann angezeigt, welche offenen Ports existieren usw.; ausführlichere Ausgaben (aber noch gut lesbar) mittels ``nmap -v adresse``. Router (Ausgabe kann etwas dauern): .. code-block:: sh nmap 192.168.2.1 Zwei Adressen auf einmal: .. code-block:: sh nmap 192.168.2.1,100 Viele Adressen auf einmal (von 1-100): .. code-block:: sh nmap 192.168.2.1-100 Auch Wildcard möglich: .. code-block:: sh nmap 192.168.2.* Funktioniert auch mit externen IP-Adressen oder Hostnames (kann einige Zeit dauern): .. code-block:: sh nmap grund-wissen.de Man kann die Ziele auch mit je einem Eintrag je Zeile in eine Textdatei schreiben, und diese an ``nmap`` übergeben: .. code-block:: sh nmap -iL ~/networks.txt Betriebsystem-Erkennung: .. code-block:: sh nmap -A adresse ---- Please (Physical Layer) Do (DataLink Layer) Not (Network Layer) Tell (Transport Layer) Secret (Session Layer) Password (Presentation Layer) Anyone (Application Layer ) ---- I think most errors occur on layer 8. The user. Evidently, this shows you the IP addresses of any interfaces your devices have. This will be the main command used to replace ifconfig: .. code-block:: sh ip link set DEVICE down ip link set DEVICE up Similar to ifconfig DEVICE down or ifconfig DEVICE up you can set your devices state to up or down. Simply replace DEVICE with the interface you would like to change the state of. Der Name eines Interfaces kann nur geändert werden, sofern dieses inaktiv ist! .. The ``/etc/network/interfaces`` file is probably the simplest way to get a network .. up and running. While it must be edited manually, it is easy to understand and .. a minimum number of configuration lines are needed to handle most situations. ss command Ein Socket besteht aus einer TCP-Adresse und einer Portnummer (similar to netstat) netstat reads from /proc, ss gets informations directly from kernel, ist also schneller und bietet mehr Infos. ss wird in der Regeln mit Zusatz-Optioenn aufgerufen ss -t tcp Informationen über TCP-Verbindungen, die für das System möglich sind. ``ss -ta`` gibt alle TCP-Infos aus. ss -u udp ``ss -ua`` gibt alle UDP-Infos aus. Von Bedeutung vor allem für DNS? ss -w raw sockets ss -x unix domain Interprocess-Communication (viele auf nem Linux-Server) ss -d dhcp ss -p process Wichtig! Beispielsweise ``ss -tp`` gibt Infos über Prozesse, deren IDs und einen File Descriptor des Servicses aus, der diesen Socket nutzt. ``n`` Option, beispielsweise ``ss -tan``, zeigt Ports als Zahlen an, nicht als "ssh" oder "http" ss -t4, -t6 ss state ss state established nur bestehende Sockets. ``ss -t state established`` TCP kann mehrere States haben:a enabled, syn-sent, syn-recv, closed, closing, all, connected (synchroniced bucket syn-recv), big, ... ``ss -t state close-wait`` ss -t state ss -lt -l steht für "listening"; hier wird also geschaut, auf welchen Ports auf externe Serverdienste geachtet wird. .. now min 12:00 ss -o time information Statische IP-Adresse mit Network Manager: In IPv4-Settings gehen, dort als Methode "Manual" auswählen; dann bei "Addresses" eine neue hinzufügen und die gewünschte IP-Adresse angeben. Beispielsweise 192.168.2.10; das Gateway ist dann 192.168.2.1. Der DNS-Server ist ebenfalls 192.168.2.1; mit einem Leerzeichen getrennt können weitere IP-Adressen für DNS-Server angegeben werden, beispielsweise 8.8.8.8 Wichtiger Eintrag für DNS in der ``/etc/resolv.conf``: ``nameserver 192.168.2.1`` Googles Standard-Nameserver: ``nameserver 8.8.8.8`` Googles zweiter Nameserver: ``nameserver 8.8.4.4`` Sonst nix :-) Default-Gateway manuell setzen: sudo route add default gw 192.168.2.1 eth0 Wifi support: Mini-USB-Stick von Adafruit Aktivieren: wiederum ``/etc/network/interfaces`` Neuer Eintrag: .. code-block:: sh allow-hotplug wlan0 auto wlan0 iface wlan0 inet dhcp wpa-ssid "YOURSSID" wpa-psk "YOURWIFIPASSWORD" oder (statisch): .. code-block:: sh auto eth0 iface eth0 inet static address 192.168.2.11 netmask 255.255.255.0 network 192.168.2.0 broadcast 192.168.2.255 gateway 192.168.2.1 allow-hotplug wlan0 auto wlan0 iface wlan0 inet static address 192.168.2.12 netmask 255.255.255.0 network 192.168.2.0 broadcast 192.168.2.255 gateway 192.168.2.1 wpa-ssid "YOURSSID" wpa-psk "YOURWIFIPASSWORD" Die Adressen für Wifi und wired netzwerk dürfen nicht gleich sein! Webserver für ``odroid`` und co installieren: .. code-block:: sh sudo aptitude install nginx sudo service nginx start Konfig-Dateien: ``/etc/nginx`` Unterverzeichnis ``sites-available``, Datei ``default``: Da steht dann irgendwo ``root /usr/share/nginx/www``. .. https://www.cyberciti.biz/tips/top-linux-monitoring-tools.html .. iptraf – Real-time Network Statistics .. The iptraf command is interactive colorful IP LAN monitor. It is an .. ncurses-based IP LAN monitor that generates various network statistics including .. TCP info, UDP counts, ICMP and OSPF information, Ethernet load info, node stats, .. IP checksum errors, and others. It can provide the following info in easy to .. read format: .. Network traffic statistics by TCP connection .. IP traffic statistics by network interface .. Network traffic statistics by protocol .. Network traffic statistics by TCP/UDP port and by packet size .. Network traffic statistics by Layer2 address