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

relevante Befehle

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

oder

ifconfig
IP-Adresse hinzufügen zweite IP:
ip addr add $IP 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.

Benennung der Netzwerkschnittstellen

Je nach Reihenfolge in der die Treiber geladen werden, werden die Netzwerkschnittstellen hochnummeriert: eth0, eth1, … . Durch udev kann die Zuordnung abgeändert werden, dsazu muss 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.

Wlan

siehe Seite zu wlan.

DHCP (IP-Adresse dynamisch beziehen)

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

allow-hotplug eth0
iface eth0 inet dhcp

Bei Desktop-PCs werden auch oft grafische Oberflächen (wie der Networkmanager) benutzt, die dann eigene Konfigurationen haben.

allow-hotplug eth0
iface eth0 inet6 dhcp

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

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.

Feste IP-Adressen

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

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.

zusätzliche feste IP-Adressen auf einer Karte

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

Feste IP-Adressen (Netplan)

Bei 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

de-installieren von netplan

sudo apt install ifupdown
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.

DNS von systemd 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 ...

Standardroute

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

Route für ein Subnetz

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

Nameserver

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

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

Internetverbindungsfreigabe

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
    iptables -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.

MAC-Adresse ändern

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.

Traffic shaping

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

Vlan

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

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

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

Nast

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

Rsync

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

Webseitenspiegelung (httrack)

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

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