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:

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.

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.

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

ip dient auch zum Auslesen und Setzen der Routen und löst daher das Tool route ab: Routing-Tabellen werden mit ip route angesprochen.

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.

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:

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:

root@abacus:~# ip link set eth0 down
root@abacus:~# ip link set eth0 up

Neue MAC-Adresse setzen:

root@abacus:~# ip link set eth0 address 00:26:18:81:1d:65

Interfacenamen ändern:

root@abacus:~# ip link set eth1 name extern
root@abacus:~# ip link show extern
6: extern: <BROADCAST,NOARP> 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):

sudo hostnamectl set-hostname Megazord

Auch in der /etc/hosts muss noch der Hostname angepasst werden. Dann:

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:

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):

nmap 192.168.2.1

Zwei Adressen auf einmal:

nmap 192.168.2.1,100

Viele Adressen auf einmal (von 1-100):

nmap 192.168.2.1-100

Auch Wildcard möglich:

nmap 192.168.2.*

Funktioniert auch mit externen IP-Adressen oder Hostnames (kann einige Zeit dauern):

nmap grund-wissen.de

Man kann die Ziele auch mit je einem Eintrag je Zeile in eine Textdatei schreiben, und diese an nmap übergeben:

nmap -iL ~/networks.txt

Betriebsystem-Erkennung:

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:

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!

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.

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:

allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
    wpa-ssid "YOURSSID"
    wpa-psk "YOURWIFIPASSWORD"

oder (statisch):

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:

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.