Hetzner Root routed Setup
Hetzner Root Server KVM Host mit zusätzlichen IPs gerouted
Das routed-Setup ist mit Netplan auch recht easy umzusetzen.
Host-Netzwerk:
root@kvm02 ~ # cat /etc/netplan/01-netcfg.yaml
# Hetzner Online GmbH installimage
network:
version: 2
renderer: networkd
ethernets:
enp35s0:
addresses:
- xxx.yyy.zzz.123/32
- IPV6
routes:
- on-link: true
to: 0.0.0.0/0
via: aaa.bbb.ccc.ddd
gateway6: fe80::1
nameservers:
addresses:
- 213.133.100.100
- 213.133.98.98
- 213.133.99.99
- 2a01:4f8:0:1::add:1010
- 2a01:4f8:0:1::add:9898
- 2a01:4f8:0:1::add:9999
bridges:
vbr120-nic:
interfaces: []
vbr110:
addresses:
- 172.27.110.1/24
interfaces: [vbr110-nic]
routes:
- to: xxx.xxx.xxx.110/32
scope: link
vbr111-nic:
interfaces: []
vbr111:
addresses:
- 172.27.111.1/24
interfaces: [vbr111-nic]
routes:
- to: xxx.xxx.xxx.111/32
scope: link
vbr112-nic:
interfaces: []
vbr112:
addresses:
- 172.27.112.1/24
interfaces: [vbr112-nic]
routes:
- to: xxx.xxx.xxx.112/32
scope: link
Im Grunde genommen bleibt die IP-Adresse des Hosts auf dem normalen Interface. Dann lege ich 3 leere Bridges, bzw Bridges mit nem Dummy-Interface an. Auf diese Bridges werden die zusätzlichen IPs geroutet (jeweils mit „scope: link“). Die Bridges bekommen jeweils eine RFC1918-IP als /24. Vermutlich sollte es auch gehen alle zusätzlichen IPs auf die gleiche Bridge zu routen, allerdings trenne ich hier gerne.
XML Auszug aus der VM Config
Die VM bekommt dann die Bridge als Netzwerk-IF konfiguriert:
<interface type='bridge'>
<mac address='aa:bb:cc:dd:ee:ff'/>
<source bridge='vbr110'/>
<target dev='vnet0'/>
<model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</interface>
VM Netzwerk-Config
Innerhalb der VM wird das Interface dann genau wie beim Host als Point-to-point konfiguriert:
# This is the network config written by 'subiquity'
network:
ethernets:
enp1s0:
addresses:
- xxx.xxx.xxx.110/32
routes:
- on-link: true
to: 0.0.0.0/0
via: 172.27.110.1
nameservers:
addresses:
- 8.8.8.8
- 1.1.1.1
version: 2
Für die Installation der VM ist es am einfachsten einen DHCP auf der Bridge laufen zu lassen, der eine IP aus dem privaten /24 vergibt, oder man konfiguriert dem Installer diese von Hand. Dann muss man natürlich mit iptables noch ein wenig masqueraden. Ich finde das geroutete Setup angenehmer und besser, als die Bridged-Variante, da ich dann die iptables-Regeln nur an einem zentralen Punkt, nämlich auf dem Host pflegen muss. Dann ist es mir auch egal, wenn Docker auf ner VM am Regelwerk rumpfuscht.