1. Index
  2. Debian
  3. Desktop
  4. Heimserver
  5. Webserver

Netzwerk konfigurieren

Auf einem Arbeitsplatz-Rechner sorgt der Network Manager für eine bestmögliche Verbindung zum Internet, entweder per Ethernet oder über ein Funknetz. Unter Gnome kann man Verbindungen über das Kontextmenü in der oberen rechten Ecke bearbeiten. Auf der Kommandozeile konfiguriert man Verbindungen mit nmcli(1) oder nmtui(1).

Hostnamen auflösen

Der NSS legt fest, in welcher Reihenfolge verschiedene Datenbanken befragt werden. Die erste Anlaufstelle ist meist die lokale Hosts-Datei gefolgt vom DNS. Ein sogenanter Recursive Resolver hangelt sich, beginnend bei einem der Root-Nameserver, bis zum für die Domäne zuständigen authoritativen Nameserver durch und merkt sich die Antworten.

Für die Datenbank hosts stehen folgende Service-Module zur Verfügung:

files
Statische Hostnamen (/etc/hosts)
nis, nisplus
Network Information System (Sun Yellow Pages)
myhostname
Eigener Hostname (/etc/hostname) sowie localhost und _gateway
mymachines
Container auf diesem Host (systemd-nspwan)
mdns
Multicast DNS für .local Domäne (avahi-autoipd)
resolve
Resolver-Daemon (systemd-resolved)
dns
Domain Name System (/etc/resolv.conf)

Der Kernel stellt die verfügbaren Geräte unter /sys/class/net zur Verfügung. Der udev(7) Daemon benennt diese nach folgemdem Schema:

Benennung von Netzwerk-Geräten
Präfix Controller Beispiel Verwendung
lo Loopback (virtuelles Schleifengerät)
en Ethernet (kabelgebundener RJ45-Adapter)
oNumber eno1 On-board (oft bei Servern)
sSlot ens1 Hotplug-Slot
pBussSlot enp0s25 PCI-Bus (0000:00:19)
xMacAddress enx23ee4711d34fHardware-Addresse
wl pBussSlot wlp4s0 Wireless (drahtloses Funknetz)
ww pBussSlot wwp0s2… Wide Area (SIM-Karte)
br br0 Bridge (Punkt-zu-Punkt Verbindung)
tun Number tun0 Tunnel (VPN)
ve- Name ve-bullseye Virtuelle Maschine

Um die klassischen Namen wie eth0 zu reaktivieren, gibt man auf der Kommandozeile des Kernels net.ifnames=0 an. Individuelle Namen wie dmz0 kann man über persistente Regel vergeben:

/etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="dmz0"

Hardware-Einstellungen des Ethernet-Adapters ausgeben

ethtool eno1

Wake-on-LAN ausschalten

ethtool --change eno1 wol d

Adressen und Routen zuweisen

Mit dem Kommando ip konfiguriert man Adressen und Routen manuell. Auf einem PC oder Server übernehmen Pakete wie ifupdown, systemd-networkd oder network-manager diese Aufgabe.

ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue…
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

Jedem Adapter lassen sich eine oder mehrere Adressen zuordnen.

ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue…
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo

In der ARP-Tabelle sammelt er die Zuordnung von IP- zu MAC-Adressen.

ip neighbour
10.0.0.1 dev eno1 lladdr de:ad:ca:fe:ba:be REACHABLE

Die Routing-Tabelle steuert, welchen Weg Pakete durch das Netzwerk nehmen.

ip route
default via 10.0.0.1 dev eno1  metric 1024

Auf einem Gateway mit mehreren Schnittstellen gibt es auch mehr Routen:

ip route
default via 10.0.0.1 dev eno1
10.0.0.0/24 dev eno1  proto kernel  scope link  src 10.0.0.2
10.0.0.0/24 dev eno2  proto kernel  scope link  src 10.0.0.1
10.8.0.0/24 via 10.8.0.2 dev tun0
10.8.0.2    dev tun0  proto kernel  scope link  src 10.8.0.1

Pakete filtern

Wenn der Kernel ein Paket empfängt oder sendet, durchläuft es eine Reihe von Filtern. Lokal zugestellte Pakete durchlaufen die Tabelle INPUT; lokal gesendete Pakete durchlaufen die Tabelle OUTPUT; und durchgeleitete Pakete die Tabelle FORWARD. Die Tabellen PREROUTING und POSTROUTING werden hauptsächlich für NAT verwendet.

Mit iptables(8) erstellt oder ändert man die Regeln.

Befehl Option Parameter Beschreibung
iptables [-t] filter|nat|mangle|raw|security Tabelle
-A INPUT|OUTPUT|FORWARD
|PREROUTING|POSTROUTING
Anhängen an Kette
[-i] eno1|ppp0|… Eingehende Schnittstelle
[-o] eno1|ppp0|… Ausgehende Schnittstelle
[-p] tcp|udp|icmp|…|all Protokoll
[-s] SourceAddr[/Mask] Client-Adresse
[-d] DestAddr[/Mask] Server-Adresse
-j ACCEPT|DROP|RETURN Aktion

Funknetz aufspannen

Die meisten WLAN-Adapter benötigen nicht-freie Firmware.

apt install firmware-{realtek,atheros,…} rfkill iw wpasupplicant hostapd

Ein sogenannter Kill Switch kann den Funkverkehr vollständig unterbinden.

rfkill unblock all

Die Drahtlosnetzwerke in der näheren Umgebung auflisten.

iw list

Die Zugangsdaten für den Client hinterlegt man in der Netzwerk-Konfiguration.

/etc/network/interfaces
allow-hotplug wlp1s0 iface wlp1s0 inet dhcp wpa-driver wext wpa-ssid Name wpa-psk Password

Ein WiFi Access Point benötigt einen WLAN-Adapter mit AP Funktion. Der Access Point Daemon startet automatisch, sobald der WLAN-Adapter eingesteckt oder eingeschaltet wurde und die Schnittstelle wlp1s0 verfügbar ist.

/etc/network/interfaces
… # wireless USB dongle allow-hotplug wlp1s0 iface wlp1s0 inet static hostapd /etc/hostapd/hostapd.conf address 192.168.24.7 netmask 255.255.255.0 # bridge to LAN auto br0 iface br0 inet static address 10.0.0.1 netmask 255.255.255.0 bridge_ports eno1

Er nimmt Anmeldungen entgegen und authentifiziert die Kommunikationspartner.

/etc/hostapd/hostapd.conf
interface=wlp1s0 ssid=Name bridge=br0 driver=nl80211 channel=11 wpa=3 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP CCMP wpa_passphrase=Password

Angemeldete Stationen erhalten ihre Adressen per DHCP.

/etc/dnsmasq.conf
interface=wlp1s0 dhcp-range=wlp1s0, 192.168.24.210, 192.168.24.253, 255.255.255.0,12h

Damit angemeldete Stationen auf das lokale Netzwerk zugreifen und im Internet surfen können, muß man im Kernel Forwarding aktivieren und schließlich die Schnittstelle starten.

echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
sysctl -p
ifup wlp1s0

Für Penetrationstests eignet sich das Programm pyrit.

Literatur

  1. Debian Wiki: NetworkConfiguration
  2. Debian Wiki: Debian Firewall
  3. Nicolas Dichtel, Russel Stuart, Roan Huang: iproute2
  4. Doug Vitale: Deprecated Linux networking commands and their replacements
  5. Ilya Grigorik: High Performance Browser Networking, O'Reilly