In meinem vorigen Artikel habe ich dargestellt, wie ich einen Router unter Debian mit KVM und pfSense virtualisiert habe. Leider gab es über das Wochenende ein Problem, und ich weiß nicht, was es war.

Ich habe zum Lasttest der Anlage einen 4K YouTube Stream gestartet und mit stress-ng --cpu 12 einen CPU-Lasttest gestartet. Nach einigen Stunden war mein Server nicht mehr per Web zu erreichen. Ich dachte erst, das System wäre abgestürzt. Also schaute ich vor Ort vorbei, und sah, dass sowohl meine VM als auch der Server in bestem Zustand waren – nur der Server hatte (durch die VM geroutet) keinen Internetzugriff mehr.

Und das hat mich gewundert. Auch darf das nicht im laufenden Betrieb passieren. Also habe ich meinen Plan geändert und kurzfristig Debian zum Router umfunktioniert.

Dafür habe ich zuerst die VMs gelöscht und die Netzwerkadapter wieder freigegeben. Damit sich die Interfaces leichter konfigurieren lassen, wird NetworkManager wieder aktiviert. Danach habe ich eine statische IP für unseren LAN-Port festgelegt.

$ sudo systemctl enable --now NetworkManager
$ nmcli con mod "enp4s0" IPv4.address 10.10.11.1/24
$ nmcli con mod "enp4s0" IPv4.gateway 10.10.11.1

Danach müssen wir IP forwarding unter Linux aktivieren und die iptables-Regeln für NAT festlegen. Dies tue ich mit einigen weiteren Befehlen.

$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward
$ sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
$ sudo iptables --table nat --append POSTROUTING --out-interface enp3s0f0 -j MASQUERADE
$ sudo iptables --table nat --append POSTROUTING --out-interface enp3s0f1 -j MASQUERADE
$ sudo iptables --append FORWARD --in-interface enp4s0 -j ACCEPT

Nun wird der Networking-Stack des Systems mit sudo /etc/init.d/networking restart neu gestartet.

Damit die iptables-Regeln beim Boot auch wieder angewendet werden, habe ich diese unter /etc/network/if-up.d/routing in eine Datei mit folgendem Inhalt gepackt:

#!/bin/sh
iptables --table nat --append POSTROUTING --out-interface enp3s0f0 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface enp3s0f1 -j MASQUERADE
iptables --append FORWARD --in-interface enp4s0 -j ACCEPT

Nun brauchen wir natürlich noch einen DNS-Server. Wir installieren dafür bind9. Viel mehr ist da eigentlich nicht für zu tun.

Noch eine Spur wichtiger ist für uns DHCP. Denn ohne DHCP können wir auch keine IP-Adressen automatisch vergeben lassen, und das wäre schon problematisch. Deswegen installieren wir isc-dhcp-server, auch bekannt als dhcpd, und fügen in der /etc/dhcp/dhcpd.conf unsere Konfiguration hinzu.

# /etc/dhcp/dhcpd.conf
option domain-name "euredomain";
option domain-name-servers 8.8.8.8,8.8.4.4;
default-lease-time 86400;
max-lease-time 172800;
authoritative;

# Im WAN keinen DHCP Service anbieten
subnet 192.168.0.0 netmask 24 {
}

# Unser LAN bekommt natürlich DHCP
subnet 10.10.11.0 netmask 24 {
  range 10.10.11.50 10.10.11.200;
  option routers 10.10.11.1;
}

Und zur Sicherheit noch:

# /etc/default/isc-dhcp-server
INTERFACE="enp4s0"

Damit wäre dann DHCP, DNS und Routing abgehakt. Bis jetzt alles stabil.

Der Routing-Teil ist abgehakt. Was wurde sonst noch am System gemacht?

Ich habe den aktuellen Kernel installiert, da lm-sensors nicht mit dem unter Debian 10 ausgelieferten 4.19 unter Ryzen 3000 läuft. Außerdem wurden noch einige nützliche Tools installiert.

$ sudo apt install linux-image-5.7.0-0.bpo.2-amd64
$ sudo apt install iftop cockpit cockpit-machines firmware-realtek 

In diesem Sinne, viel Spaß beim Sysadminen und ich hoffe, dass damit alles ab jetzt schön stabil läuft.

Kategorien: Sysadmin-Blog

0 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.