Multiple Netze und Gateways mit systemd

Vorwort

Ich habe inzwischen mehrere Server, die ich Verwalte und welche über TINC ein Layer 2 Netzwerk haben, das für meine LXC Container genutzt wird. Dadurch konnte ich Nginx auf den Server diverse LXC-Container auf unterschiedlichen Servern als Ziel angeben. Nun möchte ich aber auch Nginx in einem LXC-Container umziehen und die Server via Iptables nur noch Port 80 und 443 an diesen leiten lassen. Das hat sich durch das Default Routing Verhalten des LXC-Containers als schwerer erwiesen als gedacht.

Szenario

Server A

  • Externe IP: 999.888.777.666
  • LXC-Net IP: 10.10.13.3

Server B

  • Externe IP: 555.444.333.222
  • LXC-Net IP: 10.10.14.4

LXC-Container Nginx

  • LXC-Net IPs: 10.10.10.11, 10.10.13.11, 10.10.14.11

Aufbau

Server A und B leiten alle anfragen an ihre externe IP auf Port 80 und 443 mit folgender Iptables Regel weiter:

#Server A
iptables -I PREROUTING -d 999.888.777.666 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.10.13.142:80

#Server B
iptables -I PREROUTING -d 555.444.333.222 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.10.14.142:80

Wichtig ist zu beachten, das beide ein anderes Subnetz dafür nutzten. Das wird später nötig, da wir so die Routing Regeln im LXC-Container definieren.

Ausgehend müsst ihr natürlich das MASQUERADE aktivieren.

Im LXC-Container ist wichtig, das wir eine Systemd Version von 235 oder höher brauchen, da sonst die [RoutingPolicyRule] Sektion noch nicht zur Verfügung steht.

Die Netzwerk Konfiguration für Networkd sieht nun so aus:

[Match]
Name=lxc-net

[Network]
Address=10.10.10.11/24
Gateway=10.10.10.1
Address=10.10.13.11/24
Address=10.10.14.11/24

[Route]
Gateway=10.10.13.3
Table=3

[Route]
Gateway=10.10.14.4
Table=4

[RoutingPolicyRule]
From=10.10.13.0/24
Table=3
Priority=300

[RoutingPolicyRule]
From=10.10.14.0/24
Table=4
Priority=400
/etc/systemd/network/lxc-net.network

Dadurch werden die Packete, welche Nginx von Server A Empfängt, auch wieder über diesen Versendet und nicht ungewollt über die Default Gateway 10.10.10.1 gesendet.

Lxc und Lxc-net unter Debian 9 Stretch

Szenario Ich möchte LXC auf dem Server zur Virtualisierung nutzten. Dabei möchte ich auch das vorgesehene lxc-net  nutzen. Die anfängliche Einrichtung von LXC selbst ist schnell erledigt, damit dnsmasq für die DNS Auflösung von DNS aber einwandfrei läuft, sind einige Anpassungen notwendig. Des weiteren nutzte ich btrfs als Dateisystem um möchte später natürlich auch Subvolumes…

Neuer Server; Erste Schritte

Neuen Server Einrichten Vorwort Für ein Projekt, bei dem ich mitwirke, haben wir uns dieses Jahr dazu entschlossen einen eigenen Server einzurichten. Der Hauptgrund dafür, war das einige der gewünschten Funktionen, schnell über die Möglichkeiten eines WebSpaces hinausgingen und auch zu erwarten war das der Speicherplatz bedarf schnell Wachsen wird. Da ich aktuell aber nicht…

Kurze Übersicht

Moin moin,   dieser Beitrag soll euch einen kurzen Überblick über die Infrastruktur des Blog geben. Wenn euch hier Themen besonders Interessieren, das bitte einfach in den Kommentaren anmerken. Ich werde den bei kommenden Blogpost darauf eingehen. Herz des Ganzen ist ein Root Server bei Hetzner der mit Debian 8 läuft und über lxc Virtualisiert.…