Soooo also.
Ich musste im Netplan die routen anpassen und dann das routen Handling anpassen. Hier mal eine Zusammenfassung meiner Schritte.
Wichtige Info vorab. Hoster ist Hetzner. Also Gateway und IPv4 Konfigurationen können natürlich von Hoster zu Hoster abweichen. Allerdings habe ich die von mir verwendeten Werte aus den Hetzner Dokus gesammelt. In meinem Fall waren die Netzwerkinterfaces: ens18 und ens19. Das kann bei euch natürlich ebenfalls anders sein!
Ebenfalls konfiguriere ich hier auch direkt zwei IPv6 Adressen über NIC1 drauf. Lasst euch davon nicht verwirren. Die IPv6 Config könnt ihr auch rausnehmen.
Ziel:
Server soll mit zwei IPv4 Adressen im selben Subnetz, aufgeteilt auf zwei NICs, erreichbar sein.
-----------------------------------------------------------------------------------------------------------------------
1. Angelegt habe ich eine neue Netplan File um global für alle Netplan Files den Renderer anzupassen:
Datei: /etc/netplan/00-renderer.yaml (wird zuerst geladen und legt Renderer "networkd" fest)
Code: Select all
network:
version: 2
renderer: networkd
-----------------------------------------------------------------------------------------------------------------------
2. Dann meine eigene Netplan config (die default 50-xxxx yaml von Ubuntu angelegt habe ich nicht angefasst):
Datei: /etc/netplan/01-custom.yaml
Code: Select all
network:
version: 2
ethernets:
ens18:
dhcp4: true
dhcp6: false
accept-ra: false
addresses:
- IPv6Adresse1/64
- IPv6Adresse2/64
routes:
- to: ::/0
via: fe80::1
on-link: true
nameservers:
addresses:
# Cloudflare
- 2606:4700:4700::1111
- 2606:4700:4700::1001
- 1.1.1.1
- 1.0.0.1
# Google
- 2001:4860:4860::8888
- 2001:4860:4860::8844
- 8.8.8.8
- 8.8.4.4
ens19:
dhcp4: true
dhcp6: false
dhcp4-overrides:
use-routes: false # verhindert zweite Default-Route
route-metric: 200 # reine „Zweit-IP“
Natürlich abschließend noch:
Code: Select all
sudo netplan generate
sudo netplan apply
man könnte noch nach generate, "sudo netplan try" ausführen um nach Fehlern Ausschau zu halten.
Zusatzinfo:
Wenn ihr ne neue Config anlegt, ist diese zu offen und birgt Sicherheitsrisiken, was auch auch "netplan try" verrät.
Dazu einfach folgendes ausführen:
Code: Select all
chmod 600 /etc/netplan/01-custom.yaml.yaml
-----------------------------------------------------------------------------------------------------------------------
3. Routing-Policy außerhalb von Netplan anpassen (ich weiß das geht auch innerhalb von Netplan , aber ich habs nicht hinbekommen)
Zuerst herausfinden welche File euer Routing für die jeweilige NIC regelt:
Code: Select all
networkctl status ens19 | sed -n '1,80p'
ls -l /run/systemd/network/
Bei mir war es sowas wie: 10-netplan-ens19.network (ens19 ist meine zweite NIC. Kann bei euch anders heißen)
Dann ein drop in Verzeichnis erstellen und dort die neue policy eintragen (Befehle nacheinander):
Code: Select all
sudo mkdir -p /etc/systemd/network/10-netplan-ens19.network.d
sudo nano /etc/systemd/network/10-netplan-ens19.network.d/10-policy.conf
Datei: /etc/systemd/network/11-ens19-policy.network
Code: Select all
[Route]
Destination=0.0.0.0/0
Gateway=xxx.xxx.xxx.xxx
Table=200
[Route]
Destination=Gateway.IPv4/26
Scope=link
Table=200
[RoutingPolicyRule]
From=Eure.Zweite.IPv4.Adresse/32
Table=200
Danach Networkd neu laden:
Code: Select all
sudo systemctl daemon-reload
sudo systemctl restart systemd-networkd
Dann prüfen ob nach networkd neu laden die regel erfolgreich erstellt wurden:
Code: Select all
ip rule show # -> sollte "from Eure.Zweite.IPv4.Adresse/32 lookup 200" enthalten
ip route show table 200 # ->sowas wie: default via xxx.xxx.xxx.xxx dev ens19
-----------------------------------------------------------------------------------------------------------------------
4. [Optional] Den Kernel Filter anpassen, das keine asymmetrischen Pfade gedroppt werden (kann zu unerwünschten packet drops führen wenn nicht gemacht)
Code: Select all
sudo tee /etc/sysctl.d/99-multi-nic.conf >/dev/null <<'EOF'
net.ipv4.conf.all.rp_filter=2
net.ipv4.conf.ens18.rp_filter=2
net.ipv4.conf.ens19.rp_filter=2
net.ipv4.conf.all.arp_filter=1
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
EOF
sudo sysctl --system
-----------------------------------------------------------------------------------------------------------------------
Danach sollte das Routing eurer zweiten IP auf der zweiten NIC im selben Subnetz korrekt sein und die zweite NIC auch von außen erreichbar sein.
Ich habe mir dazu Hilfe von unserem Netzwerker geholt. Das ist nicht nur auf meinem Mist gewachsen. Funktioniert bei mir allerdings so ohne Probleme.
Ergebnis:
Server (z.B. Ping) und Keyhelp Panel sind über beide IPv4 Adressen im selben Subnetz erreichbar (und zwei IPv6 um die es aber nicht hauptsächlich ging).
Wichtig ist noch!
Es ist zwar genug für redundanzchecks bzgl. Nameserver und so. Aber zwei IPs die nicht Subnetzgetrennt sind, ergeben natürlich für Ausfallsicherheit wenig sinn!
Das sollte natürlich gesagt sein.
Am besten also solltet ihr eine zweite IP Adresse aus einem eigenen Subnetz bestellen und diese als zweite IP verwenden.
Gruß,
Luuk