linux:netzwerke

Netzwerk unter Linux

Auf dieser Seite geht es um die Netzwerkkonfiguration von Linux-Rechnern, siehe auch:

Zur Dateifreigabe/Dateiübertragung im Netzwerk hat man mehrere Möglichkeiten:

  1. FTP: unverschlüsselt, verschlüsselte Variante FTPs möglich (FTP over SSL)
  2. Samba (Windows/*nix-Rechner): unverschlüsselt
  3. SCP (Secure Copy), SSHfs oder SFTP laufen verschlüsselt über SSH
  4. NFS (vorrangig bei *nix-Rechnern): unverschlüsselt

Die Option mit VPN bzw. IPSec das Netz grundsätzlich abzusichern besteht natürlich zusätzlich.

Grundsätzlich erfolgte die Konfiguration über ifconfig, bei wlan (s.u.) kann man auch mit iwconfig arbeiten. Aktuell wird der Befehl ip verwendet, ifconfig funktioniert jedoch auch noch.

Mit dem Befehl netcardconfig kann man auf einigen Systemen arbeiten.

IP-Adresse wechseln

Einstellung Befehl(e)
IP-Adresse, Broadcast, Netzwerkmaske anzeigen
ip addr show

oder

ifconfig
IP-Adresse hinzufügen zweite IP:
ip addr add $IP/$Netmask broadcast $bcIP dev $device

oder

ifconfig $device:1 $IP netmask $SUBNET up
IP-Adresse entfernen
ip addr del $IP/$netmask dev $device

oder alle IPs entfernen:

ip addr flush dev $device

1)

ARP-Eintrag hinzufügen
ip neigh add $IP lladdr $MAC nud permanent dev $device

oder

arp -i $device -s $IP $MAC
Netzwerkkarten (de)aktivieren
ip link down $device

ifup, ifdown; auch ifconfig:

ifconfig $device down
Hostname hostname
Standard/Defaultroute® oder Gateway
ip route show

oder

route -n
Route hinzufügen
ip route add $IP/$netmask dev $device

oder

route add -net $IP/$netmask dev $device
Nameserver, Domainname Ausgabe:
cat /etc/resolv.conf

oder eintragen in dieser Datei. :!: Achtung: Bei aktuellen Linux-Distributionen steht dort eine IP wie 127.x.x.x. Grund ist das die historische Datei-Lösung eher ungeeignet für dynamische Wechsel von DNS-Servern ist (Wechsel ins Wlan, VPN, …). Daher gibt es lokal fest eingetragene Resolver die nach Bedarf schnell zwischen verschiedenen DNS-Servern umschalten können. Das sind Beispielsweise der networkmanager, resolvconf oder systemd 2).

Netzwerkschnittstellen
Netzwerkschnittstellenkonfiguration
cat /etc/network/interfaces

bzw. /etc/netplan/50-cloud-init.yaml bei netplan (s.u.)

Bekannte Dienste (Ports) Ausgabe:
cat /etc/services
Wlan iwconfig, iwlist, iwpriv (private Parameter für wlan)

Anmerkung: der Befehl cat gibt den Inhalt der Datei aus.

Je nach Reihenfolge in der die Treiber geladen werden, werden die Netzwerkschnittstellen hochnummeriert: eth0, eth1, … . Durch udev kann die Zuordnung abgeändert werden, dazu muss bei früher bei Debian die Datei /etc/udev/rules.d/70-persistent-net.rules abgeändert werden. Heutzutage werden die Schnittstellen abhängig von diversen Faktoren benannt, z.B. enp0s3.

Vlan-Funktionen sind im Namen durch einen Punkt abgetrennt, Aliase durch einen Doppelpunkt.

Diese Namen könnten sich nach größeren kernel-upgrades ändern, deshalb ist möglicherweise ein festes Schema sinnvoller. Beispiel anhand eingebauter MAC-Adressen:

# /etc/systemd/network/99-interfaces.link
[Match]
OriginalName=*

[Link]
NamePolicy=mac
MACAddressPolicy=persistent

Beispiel: Eine konkrete Netzwerkkarte mit MAC-Adresse aa:bb:cc:dd:ee:ff auf eth1p1:

[Match]
MACAddress=aa:bb:cc:dd:ee:ff
[Link]
Name=eth1p1

eth0 beibehalten

Kernel-Boot-Parameter: net.ifnames=0 biosdevname=0 in /etc/default/grub

# debian:
sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT=\"quiet\"/GRUB_CMDLINE_LINUX_DEFAULT=\"quiet net.ifnames=0 biosdevname=0\"/' /etc/default/grub
# ubuntu:
sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT=\"\"/GRUB_CMDLINE_LINUX_DEFAULT=\"net.ifnames=0 biosdevname=0\"/' /etc/default/grub
update-grub

Im Debian-Paket moreutils befindet sich „ifdata“, dies kann diverse Informationen über Netzwerkschnittstellen maschinenlesbar aufbereiten:

Usage: ifdata [options] iface
     -e   Reports interface existence via return code
     -p   Print out the whole config of iface
    -pe   Print out yes or no according to existence
    -pa   Print out the address
    -pn   Print netmask
    -pN   Print network address
    -pb   Print broadcast
    -pm   Print mtu
    -ph   Print out the hardware address
    -pf   Print flags
    -si   Print all statistics on input
   -sip   Print # of in packets
   -sib   Print # of in bytes
   -sie   Print # of in errors
   -sid   Print # of in drops
   -sif   Print # of in fifo overruns
   -sic   Print # of in compress
   -sim   Print # of in multicast
    -so   Print all statistics on output
   -sop   Print # of out packets
   -sob   Print # of out bytes
   -soe   Print # of out errors
   -sod   Print # of out drops
   -sof   Print # of out fifo overruns
   -sox   Print # of out collisions
   -soc   Print # of out carrier loss
   -som   Print # of out multicast
  -bips   Print # of incoming bytes per second
  -bops   Print # of outgoing bytes per second

siehe Seite zu wlan.

Konfiguration mit DHCP (dynamische Adressvergabe, unter Windows wird dies als „automatisch“ bezeichnet.

ifupdown2 / ifupdown2

DHCP-Einstellungen in der (/etc/network/interfaces):

allow-hotplug eth0
iface eth0 inet dhcp
allow-hotplug eth0
iface eth0 inet6 dhcp

Wenn man seine IP mit DHCP aktiv beziehen möchte start man entweder den DHCP-Dienst (wenn man ihn installiert hat):

sudo dhcpd eth0

oder die Clientversion, die vorhanden sein sollte:

sudo dhclient eth0

Eine komplette Videovorführung findet sich dazu auch bei offensive-security.com.

Alternativ geht machmal auch:

ifconfig eth0 dhcp start

Status des DHCP-Abrufs:

ifconfig eth0 dhcp status

IP freigeben:

ifconfig eth0 dhcp release

Debian:

ifconfig eth0 dynamic 

oder der Aufruf von pump das natürlich dann installiert sein muss.

netplan

FIXME

Networkmanager

Benutzt u.a. bei RedHat / CentOS. Bei Desktop-PCs werden auch oft grafische Oberflächen (wie der Networkmanager) benutzt, die dann eigene Konfigurationen haben.

systemd-networkd

Konfiguration mit einer festen IP-Adresse (unter Windows wird dies als „manuell“ bezeichnet).

ifupdown2 / ifupdown2

Alter Befehl mit ifconfig:

ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255 up

Im obigen Bespiel wird für die erste Ethernet-Karte eth0 die IP 192.168.0.1 gesetzt, Netzmaske ist bei einem Class-C Netzwerk standardmäßig 255.255.255.0 und die Broadcast-Adressse auch dementsprechend.

Bei IPv6:

ip addr add 2a01:4e8:141:1d1::1/64 dev eth0
ifup eth0

oder

ifconfig eth0 inet6 add 2a01:4e8:141:1d1::1
ifconfig eth0 up

Das entfernen der Adresse ist mit dem Ersetzen von „add“ durch „del“ erledigt.

Mit up werden die Netzwerkkartentreiber geladen, man kann sie auch später mit ifconfig eth0 down entladen und damit die Schnittstelle deaktivieren.

Dauerhafte Einstellungen in der Datei /etc/network/interfaces (Debian, Ubuntu und darauf basierende):

Beispiel 1: Feste IP (192.168.0.123) aus dem 192.168.0.0-Netz:

allow-hotplug eth0
iface eth1 inet static
	address 192.168.0.123
	netmask 255.255.255.0
	network 192.168.0.0
	broadcast 192.168.0.255
	gateway 192.168.0.1
	# dns-* options are implemented by the resolvconf package, if installed
	dns-nameservers 192.168.0.1
	dns-search local

Bei IPv6:

iface eth0 inet6 static
	# Haupt-IPv6-Adresse des Servers
	address 2a01:4e8:141:1d1::1
	netmask 64
	gateway fe80::1

Auf Servern kann auch anstatt allow-hotplug eth0 gleich „auto eth0“ eingetragen werden, damit Dienste, die sich beim Start des Rechners an eine bestimmte IP (oder eine bestimmte Schnittstelle) binden wollen, nicht beim Start fehlschlagen. Siehe Hotplug unter Debian, SLES 9 und RHAS 4 erweitern.

netplan

Ab Ubuntu 18.04 wird die Netzwerkkonfiguration mit Netplan realisiert. Hiermit kann die Konfiguration in mehrere Dateien aufgesplittet (wie vorher auch mit /etc/network/interfaces.d) werden und folgt der yaml-Syntax. Der Ubuntu-Installer legt die folgende Datei an: /etc/netplan/50-cloud-init.yaml, Beispiel einer Dual-stack-Konfiguration:

network:
    ethernets:
        enp0s3:
            addresses: [192.168.0.2/24, "2a02:708:xx:xx::2/64"]
            gateway4: 192.168.0.1
            gateway6: 2a02:708:xx:xx::1
            dhcp4: no
            dhcp6: no
            nameservers:
                addresses: [8.8.8.8, "2001:4860:4860::8888"]
    version: 2
    renderer: networkd

Networkmanager

FIXME

systemd-networkd

ifupdown2 / ifupdown2

Zusätzliche IP-Adressen können auf einer Karte durch anhängen von „:1“, „:2“ usw. erzeugt werden:

ifconfig eth0:1 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up

Bei IPv6:

ip addr add 2a01:4e8:141:1d1::1/64 dev eth0:1

Dauerhafte Konfiguration:

# 1. IP
auto eth0
iface eth0 inet static
	address 192.168.0.1
	netmask 255.255.255.0
	network 192.168.0.0
	broadcast 192.168.0.255
	gateway 192.168.0.254
	# dns-* options are implemented by the resolvconf package, if installed
	dns-nameservers 192.168.0.2
	dns-nameservers 192.168.0.3

# 2. IP
auto eth0:1
iface eth0:1 inet static
	address 192.168.1.1
	netmask 255.255.255.0
	network 192.168.1.0
	broadcast 192.168.1.255

netplan

FIXME

Networkmanager

FIXME

systemd-networkd

sudo apt install ifupdown2
sudo apt purge netplan.io

/etc/default/grub:

GRUB_CMDLINE_LINUX="netcfg/do_not_use_netplan=true"
sudo update-grub

Die Datei /etc/network/interfaces muss angelegt und konfiguriert werden.

Aktuellen Status anzeigen: systemd-resolve --status

DNS-caching von systemd-resolved deaktivieren

DNS-Cache löschen (temporär): systemd-resolve --flush-caches Caching-Statistiken: systemd-resolve --statistics

Caching permanent deaktiveren: /etc/systemd/resolved.conf (siehe auch: man 5 resolved.conf):

Cache=no

systemctl restart systemd-resolved.service

manuell DNS-Server für ein Interface setzen

Beispiel: eth0 mit DNS-Server 192.168.88.22:

sudo systemd-resolve –interface eth0 –set-dns 192.168.88.22 –set-domain yourdomain.local

systemd-resolved deaktivieren

Bei Serversystemen kann die Abstraktion durch systemd nicht gewünscht oder störend wirken. So kann der systemd-resolved-service deaktiviert werden:

systemctl stop systemd-resolved.service
systemctl disable systemd-resolved.service
rm /etc/resolv.conf     # (weil nun broken link auf ../run/systemd/resolve/stub-resolv.conf)

Neue /etc/resolv.conf anlegen:

nameserver 8.8.4.4
nameserver ...

nscd „Name service caching daemon“ wurde bei einigen Distributionen eingesetzt (Ubuntu 16.04, …). Dabei werden Zugriff auf die /etc/passwd, /etc/group und /etc/hosts via Systemfunktionen abgefangen.

Config: /etc/nscd.conf

Standardroute vergeben:

route add default gw 192.168.0.254

Hier als Beispiel ein Router (ins Internet) mit der IP 192.168.0.254 angegeben.

Bei IPv6:

ip -6 route add default via 2a01:3e8:22:1200::1 dev eth0

oder

route --inet6 add default gateway 2a01:3e8:22:1200::1

In manchen Fällen kennt das Standard-Gateway die passende Route nicht, man möchte diese dort hinterlegen oder gezielt übergehen.

Beispiel: Das Netz 192.168.3.0 (Netzmaske 255.255.255.0) ist hinter dem Router 192.168.2.2 zu erreichen:

route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.2.2 eth0

Equivalent in ipv6 (Netz 2001:41d0:1000:1234:ffff:ffff:ffff:ffff soll via Router 2a01:1234:1234:1234::1 erreicht werden):

ip -6 route add 2001:41d0:1000:1234:ffff:ffff:ffff:ffff via 2a01:1234:1234:1234::1 dev eth0

Den Nameserver trägt man in der Datei /etc/resolv.conf im Format

nameserver 192.168.0.254

ein. Hier muss natürlich die richtige IP-Adresse eingetragen werden.

Bei neueren (eher desktop)-Systemen findet sich dort ein Verweis auf 127.0.0.53, was auf das lokal laufende systemd-resolve --status verweist.

IP für ausgehende Verbindungen ändern (wenn mehrere IPs konfiguriert sind)

Vorher:

ip route
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.2
default via 10.0.0.1 dev eth0

Default Route erweitern:

ip route change default via 10.0.0.1 dev eth0 src 10.0.0.3

Nacher:

ip route
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.2
default via 10.0.0.1 dev eth0 src 10.0.0.3

Für die Freigabe von Internetverbindungen für private Adressen aus einem angeschlossenen Netzwerk.

Als Beispiel wird in der ersten Zeile die Weiterleitung von Paketen aktiviert und in der zweiten mit der Firewall iptables die Pakete auf das Interface eth0 weitergeleitet:

Jeweils mit root-Rechten ausführen:

  • für IPv4:
    echo "1" > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • für IPv6:
    echo "1" >/proc/sys/net/ipv6/conf/all/forwarding
    ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Diese Einstellungen lassen sich auch dauerhaft in der Datei /etc/sysctl.conf vornehmen:

  • IPv4: net.ipv4.ip_forward=1
  • IPv6: net.ipv6.conf.all.forwarding=1

Oder die obigen Zeilen in einem Skript unter /etc/network/if-up.d/ ablegen.

ifconfig eth0 down
ifconfig eth0 hw ether 00:0f:ff:ff:ff:ff

hier besser eine bekannte (z.B. von einer rumliegenden Netzwerkkarte) und eine sinnvolle MAC-Adresse eingeben, bei Gleichheiten im Netz gibt es Probleme.

:!: Das Programm macchanger (auch mit grafischer Oberfläche verfügbar) hilft ebenfalls bei der Änderung:

/usr/bin/macchanger --mac=XX:XX:XX:XX:XX:XX ethX

Unter Ubuntu: Wenn man nicht ifconfig benutzen will, gibt es auch „/usr/bin/network-admin“ dass man mit „gksu -u root network-admin“ aufrufen kann.

Bei Atheros-Chipsätzen: WLAN/MadWifi.

Unter „traffic shaping“ versteht man die Begrenzung bzw. das Einteilen vorhandener Kapazitäten zur Qualitätssicherung (siehe auch QoS).

Um auf der Netzwerkkarte eth0 die vlans 100 und 101 zu aktivieren reichen diese Befehle:

ip link add link eth0 name eth0.100 type vlan id 100
ip link set dev eth0.100 up
ip addr add a.b.c.1/24 brd 1.b.c.255 dev eth0.100

vconfig ist veraltet (wird in aktuellen Systemen nicht mehr unterstützt)

modprobe 8021q
vconfig add eth0 100
vconfig add eth0 101

Anschließend sind die logischen interfaces eth0.100 und eth0.101 angelegt, diese lassen sich wiederum mit den üblichen Mitteln konfigurieren. vconfig ist bei Debian / Ubuntu im Paket vlan enthalten.

Bandwidth Monitoring Tools for Ubuntu Users

wichtige Diagnosetools

traceroute - a very useful troubleshooting tool which reveals the bottlenecks on the Internet

Fehlercodes von traceroute
Code engl. Bedeutung Deutsch
!H host unreachable Rechner nicht erreichbar
!N network unreachable Netzwerk nicht verfügbar
!P protocol unreachable Protokoll nicht erreichbar
!S source route failed FIXME
!F fragmentation needed Packet müsste fragementiert werden
!X communication administratively prohibited ICMP-Antwort ist auf dem (Ziel-)Rechner verboten
!V host precedence violation FIXME
!C precedence cutoff in effect FIXME
!<NUMMER> ICMP unreachable code <num> ICMP Fehlercode <Nummer> wird zurückgemeldet

Nast

  • Scannt Topologien via ARP: -m
  • Überwacht auf ARP-Poisioning: -c
  • sucht Gateway: -g

rsync ist eine leistungsfähige Software zur bandbreitenschonenden Übertragung von Daten, das geht auch über SSH.

zum spiegeln einer kompletten Seite gibt man httrack mit z.b. folgenden Parametern an:

httrack -K0 -%q0 --keep-alive --urlhack -D http://www.example.com

Der Ordner kann danach sehr schnell auf den aktuellen Stand gebracht werden (update)

httrack -u --continue
wget URL # (auch ganze Verzeichnisse wenn wie bei FTP Verzeichnislisting funktioniert)
wget -c datei fortsetzen
wget --spider --force-html -i bookmarks.html : Prüfen ob Links noch funktionieren
wget -r -l 1 -nd --convert-links -e robots=off URL # Datei incl. 1 Linkebene herunterladen, robots.txt ignorieren

Make Wget cater to your needs

Zuerst sollte man einen Zugang zum Handy mit Bluetooth herstellen, dann kann man mit Einwahlprogrammen (wie wvdial oder kppp) eine Verbindung herstellen.


1)
von allen Netzwerkkarten im System:
for i in $(ls /sys/class/net/) ; do
    /usr/sbin/ip addr flush $i &
done
2)
systemd-resolve --status
Deaktivierung siehe DNS von systemd deaktivieren