%20und%20IPv6.png)
Ich miete einen dedizierten Server bei Hetzner und habe Ubuntu Server 18.04 LTS darauf installiert. Ich habe zwei öffentliche IPv4-Adressen namens xxxx und yyyy und einen IPv6 /64-Block für die Verbindung meiner privaten Netzwerke mit dem Internet. Ich verwende NAT für IPv4.
Mein Netzwerk ist mit Netplan wie folgt konfiguriert:
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- x.x.x.x/32
- y.y.y.y/32
- a.a.a.a::2/64
routes:
- on-link: true
to: 0.0.0.0/0
via: z.z.z.z
gateway6: fe80::1
nameservers:
addresses:
- 1.1.1.1
- 1.0.0.1
- 2606:4700:4700::1111
- 2606:4700:4700::1001
bridges:
xenbr0:
interfaces: []
addresses:
- 192.168.0.1/24
- a.a.a.a::3/64
parameters:
forward-delay: 0
stp: false
xenbr1:
interfaces: []
addresses:
- 192.168.1.1/24
- a.a.a.a::4/64
parameters:
forward-delay: 0
stp: false
Die Installation und Konfiguration von XEN:
sudo apt-get install xen-hypervisor-amd64 xen-tools
sudo reboot
sudo vim /etc/default/grub
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=min:1024M,max:1024M dom0_max_vcpus=2 dom0_vcpus_pin"
sudo vim /etc/xen/xl.conf
autoballoon=0
sudo update-grub
sudo reboot
VMs sollten über IP-Weiterleitung und NAT vom und zum Internet zugänglich sein.
sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sudo sysctl -p /etc/sysctl.conf
sudo apt-get install iptables-persistent
Der NAT-Teil:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Leiten Sie HTTP- und HTTPS-Anfragen an unseren VM2-Server weiter:
sudo iptables -A PREROUTING -t nat -p tcp -i eth0 -d x.x.x.x --dport 80 -j DNAT --to 192.168.0.11:80
sudo iptables -A PREROUTING -t nat -p tcp -i eth0 -d x.x.x.x --dport 443 -j DNAT --to 192.168.0.11:443
Wir möchten keinen Datenverkehr zwischen 192.168.0.x <-> 192.168.0.y, also löschen wir alle Datenpakete mit einigen einfachen Regeln. Dies blockiert die Kommunikation zwischen den Brücken:
sudo iptables -P FORWARD DROP
sudo iptables -A FORWARD -i eth0 -o xenbr0 -j ACCEPT
sudo iptables -A FORWARD -i xenbr0 -o eth0 -s 192.168.0.0/24 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o xenbr1 -j ACCEPT
sudo iptables -A FORWARD -i xenbr1 -o eth0 -s 192.168.1.0/24 -j ACCEPT
Der IPv4-Teil funktioniert einwandfrei, aber der IPv6-Teil nicht. Ich habe meinen VMs manuell eine IPv6-Adresse zugewiesen. Wenn ich bei VM1 angemeldet bin, kann ich xenbr0 an Adresse ::3 und VM2 an Adresse ::11 anpingen, aber nicht eth0 an Adresse ::2. Es ist, als ob die Brücke den IPv6-Verkehr daran hindert, das Netzwerk zu verlassen, aber ich kann nicht herausfinden, warum.
Antwort1
Ich habe es herausgefunden. Der Schlüssel ist, eine IPv6-Adresse mit /128-Netzmaske zu verwenden, die als Gateway für Ihre VMs fungiert. Beginnen wir mit der Änderung der Netplan-Konfiguration:
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- x.x.x.x/32
- y.y.y.y/32
- a.a.a.a::00/128
- a.a.a.a::10/128
routes:
- on-link: true
to: 0.0.0.0/0
via: z.z.z.z
gateway6: fe80::1
nameservers:
addresses:
- 1.1.1.1
- 1.0.0.1
- 2606:4700:4700::1111
- 2606:4700:4700::1001
bridges:
xenbr0:
interfaces: []
addresses:
- 192.168.0.1/24
- a.a.a.a::00/125
parameters:
forward-delay: 0
stp: false
xenbr1:
interfaces: []
addresses:
- 192.168.1.1/24
- a.a.a.a::10/125
parameters:
forward-delay: 0
stp: false
Achten Sie auf die IPv6-Adressen, die den Schnittstellen eth0, xenbr0 und xenbr1 zugewiesen sind. Eth0 erhält zwei einzelne IPv6-Adressen (/128), während xenbr0 und xenbr1 einen Block von acht Adressen (/125) erhalten, die für Ihre VMs verwendet werden können. Die Netzwerkkonfiguration von VM1 sieht folgendermaßen aus:
# The loopback network interface
auto lo
iface lo inet loopback
iface lo0 inet6 loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.255.0
broadcast 192.168.0.255
network 192.168.0.0
gateway 192.168.0.1
iface eth0 inet6 static
address a:a:a:a::01
netmask 125
gateway a:a:a:a::00
Und VM3-Konfiguration, die eine andere Brücke verwendet:
# The loopback network interface
auto lo
iface lo inet loopback
iface lo0 inet6 loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0
gateway 192.168.1.1
iface eth0 inet6 static
address a:a:a:a::11
netmask 125
gateway a:a:a:a::10
Vergessen Sie nicht, die IP-Weiterleitung für IPv6 zu aktivieren.
sudo vim /etc/sysctl.conf
net.ipv6.conf.all.forwarding=1
sudo sysctl -p /etc/sysctl.conf