LXC Network mit IPv6

  • Thread starter Thread starter Deleted member 13046
  • Start date Start date
D

Deleted member 13046

Guest
Hallo Allen, ich benötige mal Hilfe für das LXC Networking.
Ich stehe mit der IP Geschichte immer bissel auf dem Schlauch. ;-)

Ich hab Debian 9 also Host und Debian 9 als Gastsystem, dazu ein IPv6 /64 Netz.

Nun möchte ich die /64 IPv6 Adressen (auch einzeln) routen.
in der sysctl hab ich folgendes aktiviert:
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

Im Host hab ich dazu:
etc/network/interface
Code:
### Hetzner Online GmbH installimage

#source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback
iface lo inet6 loopback

auto enp2s0
iface enp2s0 inet static
  address xxx.x.138.218
  netmask 255.255.255.224
  gateway xxx.x.138.193
  # route xxx.x.138.192/27 via xxx.x.138.193
  up route add -net xxx.x.138.192 netmask 255.255.255.224 gw xxx.x.138.193 dev enp2s0

iface enp2s0 inet6 static
  address xxxx:xxx:160:12ce::2
  netmask 64
  gateway fe80::1
  up sysctl -p
  ip -6 route add xxxx:xxx:160:12ce::/64 dev vmbr0  
  
iface vmbr0 inet6 static
pre-up /sbin/modprobe -q ipv6 ; /bin/true
  address xxxx:xxx:160:12ce::3 
  netmask 64
   up ip route add IP.v4.local.route dev vmbr0
 up ip -6 route add xxxx:xxx:160:12ce::/64 dev vmbr0

Im Gast:
etc/network/interface
Code:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet6 static
  address xxxx:xxx:160:12ce::4
  netmask 64
  gateway xxxx:xxx:160:12ce::3

Leider geht das so garnicht.
Host ist per SSH erreichbar, Gast nicht.

Wer kann mir da mal auf die Sprünge helfen.
Besten Dank
Gruß Haxley
 
Last edited by a moderator:
Wenn ich deine Konfig verstehe, dann versuchst du gerade zwischen zwei physikalischen Netzen zu routen, die aber den gleichen IP-Bereich verwenden. Das klappt logischerweise nicht, da die Pakete dann nicht an das Gateway gehen. Sofern dein Anbieter keinen MAC-Filter einsetzt oder du die MAC-Adressen deiner virtuellen Maschinen bei ihm registrieren kannst, kannst du dir das Routing sparen und eine Bridge einsetzen. Falls das nicht geht, brauchst du ein zweites Subnet und kannst dann routen (ggfl. aus dem FD::/8 Bereich mit NAT).
 
Ok, dann halt per Subnetz.
Ich sehe bei dem ganzen IP geschiebe nur überhaupt nicht durch. Hab es mal nach der Anleitung versucht aber da ist dann meine IPv6 des Host nicht mehr zu erreichen. Ich werde Wahnsinnig damit ...
Ich versuche hier aus der IPv6 /64 ein Subnetz zu verwenden.
Host etc/network/interface
Code:
auto lo
iface lo inet loopback
iface lo inet6 loopback

auto enp2s0
iface enp2s0 inet static
  address xxx.9.138.218
  netmask 255.255.255.224
  gateway xxx.9.138.193
  # route xxx.9.138.192/27 via xxx.9.138.193
  up route add -net xxx.9.138.192 netmask 255.255.255.224 gw xxx.9.138.193 dev enp2s0

iface enp2s0 inet6 static
  address xxxx:xxx:160:12ce::2
  netmask 64
 gateway fe80::1
  up sysctl -p
   


iface vmbr0 inet6 static
  address xxxx:xxx:160:12ce:1::1 
  netmask 128
   gateway fe80::1
   post-up ip -6 route add fe80::1 dev vmbr0
        post-up ip -6 route add default via fe80::1 dev vmbr0
        post-down ip -6 route del fe80::1 dev vmbr0
        post-down ip -6 route del default via fe80::1 dev vmbr0
  
auto vmbr1
iface vmbr1 inet6 static
        address xxxx:xxx:160:12ce:2::1
        netmask 80
        bridge_stp off
        pre-up brctl addbr vmbr1
        post-down brctl delbr vmbr1
        # Muss für jede Container IPv6 Adresse kopiert werden
        post-up ip -6 neigh add proxy xxxx:xxx:160:12ce:2::104 dev vmbr0

Fehler:
Code:
Dec 24 07:46:39 host2 systemd[1]: Starting Raise network interfaces...
Dec 24 07:46:39 host2 ifup[8004]: Device "vmbr0" does not exist.
Dec 24 07:46:39 host2 ifup[8004]: ifup: failed to bring up vmbr0
Dec 24 07:46:39 host2 ifup[8004]: device vmbr1 already exists; can't create bridge with the same name
Dec 24 07:46:39 host2 ifup[8004]: ifup: failed to bring up vmbr1
Dec 24 07:46:39 host2 systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Dec 24 07:46:39 host2 systemd[1]: Failed to start Raise network interfaces.
Dec 24 07:46:39 host2 systemd[1]: networking.service: Unit entered failed state.
Dec 24 07:46:39 host2 systemd[1]: networking.service: Failed with result 'exit-code'.

Könnte mir das bitte mal einer so richten, dass die 104 an den Container weitergegeben wird und der Host aber auch erreichbar ist? Wenn ich das einmal fertig sehe kann ich das dann auch nachvollziehen.
Die enp2s0 wurde übrigens von Hetzner so vorgegeben.

Tausend Dank!
Gruß Haxley
 
Last edited by a moderator:
Dein Device vmbr0 existiert nicht - mußt du also erstellen. Daher klappt es auch mit dem Zugriff auf die IP nicht. Das Device vmbr1 existiert bereits und kann daher nicht erneut erstellt werden. Da mußt du schauen, warum das der Fall ist (evtl. existierte das Interface noch von deiner alten Konfig und wurde nicht gelöscht?)
Also beseitige erst mal deine Fehler im Log und dann wird sich zeigen, was danach noch nicht funktioniert.
 
Danke erstmal!


So ich hab es soweit:
install:
apt install lxc

Prüfen ob alles ok:
lxc-checkconfig

Container installieren
LANG=de_DE.UTF-8 SUITE=stretch MIRROR=http://httpredir.debian.org/debian lxc-create -n enterprise -t debian

klappt alles

Host:
in der etc/sysctl folgendes aktivieren:
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

reboot

in der etc/network/interfaces
Code:
auto lo
iface lo inet loopback
iface lo inet6 loopback
auto enp2s0
iface enp2s0 inet static
 address xxx.x.138.218
 netmask 255.255.255.224
 gateway xxx.x.138.193
 # route xxx.x.138.192/27 via xxx.x.138.193
 up route add -net xxx.x.138.192 netmask 255.255.255.224 gw xxx.x.138.193 dev enp2s0
iface enp2s0 inet6 static
 address xxxx:xxx:160:12ce::2
 netmask 128
 gateway fe80::1
up sysctl -p
# address wie oben auch, auf 1::2, netmask 64  
iface vmbr0 inet6 static
 address xxxx:xxx:160:12ce:1::2
 netmask 64
 # IPv6 routing
 up ip -6 route add xxxx:xxx:160:12ce:1::/64
in der VM

in /etc/resolv.conf (ist evtl. schon da)
Code:
nameserver 213.133.98.98
nameserver 213.133.99.99
nameserver 213.133.100.100
nameserver 2a01:4f8:0:a0a1::add:1010
nameserver 2a01:4f8:0:a102::add:9999
nameserver 2a01:4f8:0:a111::add:9898
etc/network/interfaces
Code:
# ipv6
# Note: check nameserver on local net (lxdbr0) first (zum test erstmal raus)
iface eth1 inet6 static
  address xxxx:xxx:160:12ce:11:2
  netmask 64
  gateway xxxx:xxx:160:12ce::2
  dns-nameservers  2a01:4f8:0:a0a1::add:1010 2a01:4f8:0:a102::add:9999
ist das soweit erstmal richtig?

muss in der VM nicht die /var/lib/lxc/meineVM/config angepasst werden?
bei mir ist die so:
Code:
lxc.network.type = empty
lxc.rootfs = /var/lib/lxc/enterprise/rootfs
lxc.rootfs.backend = dir
# Common configuration
lxc.include = /usr/share/lxc/config/debian.common.conf
nehme ich:
lxc.network.ipv6 = xxxx:xxx:160:12ce:11:2
mit rein, gibt es einen Fehler beim starten.
Code:
lxc-start: confile.c: config_network_ipv6: 959 File exists - invalid ipv6 address: xxxx:xxx:160:12ce:11:2
lxc-start: parse.c: lxc_file_for_each_line: 57 Failed to parse config: lxc.network.ipv6 = xxxx:xxx:160:12ce:11:2
Deswegen weggelassen.


Die VM startet mit lxc-start -n enterprise
nur ist sie nicht via xxxx:xxx:160:12ce:11:2 zu erreichen.
Auch lxc-info -i -n enterprise liefert keine IP.

Was hab ich vergessen oder falsch gemacht?


Danke Euch total!
 
Das Format der IPV6 Adresse wird moniert..

Code:
invalid ipv6 address: xxxx:xxx:160:12ce:11:2

Sechs Blöcke ohne :: um die Nullen zu kürzen könnte ein wenig wenig sein..
 
Gelöst

So hab die Verbindung per SSH zur VM hinbekommen. Nur hat die VM keine Verbindung zum Internet. (z.B. auf die Debian Source).
An was kann das liegen?

so sieht das Netzwerk nun aus:

Host
sysctl.conf
Code:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.proxy_ndp = 1
net.ipv6.conf.default.proxy_ndp = 1

etc/network/interfaces
Code:
auto lo
iface lo inet loopback
iface lo inet6 loopback

auto enp2s0
iface enp2s0 inet static
  address xxx.x.138.218
  netmask 255.255.255.224
  gateway xxx.x.138.193
  # route xxx.x.138.192/27 via xxx.x.138.193
  up route add -net xxx.x.138.192 netmask 255.255.255.224 gw xxx.x.138.193 dev enp2s0

iface enp2s0 inet6 static
  address xxxx:xxx:160:12ce::2
  netmask 128
  gateway fe80::1
   up sysctl -p

# vmbr2: IPv6
auto vmbr2
iface vmbr2 inet6 static
address xxxx:xxx:160:12ce::2
netmask 64
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv6/conf/all/proxy_ndp
post-up echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
post-up echo 1 > /proc/sys/net/ipv6/conf/default/forwarding
post-up /sbin/ip -f inet6 neigh add proxy xxxx:xxx:160:12ce::2 dev vmbr2
post-up /sbin/ip -f inet6 neigh add proxy xxxx:xxx:160:12ce::3 dev vmbr0
post-up /sbin/ip -f inet6 route add xxxx:xxx:160:12ce::3 dev vmbr2

VM
/var/lib/lxc/meineVM/config
Code:
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = vmbr2
lxc.rootfs = /var/lib/lxc/enterprise/rootfs
lxc.rootfs.backend = dir
lxc.network.ipv6 = xxxx:xxx:160:12ce::3/64
# ip-adresse des lxc-hosts
lxc.network.ipv6.gateway = xxxx:xxx:160:12ce::2
# Common configuration
lxc.include = /usr/share/lxc/config/debian.common.conf

# Container specific configuration
lxc.tty = 4
lxc.utsname = enterprise
lxc.arch = amd64

und die etc/network/interfaces
Code:
iface eth1 inet6 static
  address xxxx:xxx:160:12ce::3
  netmask 64
  gateway xxxx:xxx:160:12ce::2
  dns-nameservers  2a01:4f8:0:a0a1::add:1010 2a01:4f8:0:a102::add:9999

geholfen haben die Chinesen http://hw7.net/?p=252

ein ifconfig liefert:
Code:
root@enterprise:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 xxxx::xxxx:xxxx:fe88:63aa  prefixlen 64  scopeid 0x20<link>
        inet6 xxxx:xxx:160:12ce::3  prefixlen 64  scopeid 0x0<global>
        ether ce:68:83:88:63:aa  txqueuelen 1000  (Ethernet)
        RX packets 103  bytes 14990 (14.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 108  bytes 17256 (16.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
Last edited by a moderator:
So hab die Verbindung per SSH zur VM hinbekommen. Nur hat die VM keine Verbindung zum Internet. (z.B. auf die Debian Source).
An was kann das liegen?

Klappt die Namensauflösung in der VM? Ist der von dir verwendete Debian-Mirror IPv6-fähig? Kannst du andere Ziele anpingen wie z.B. Google?
 
Anscheint klappt die Namensauflösung nicht richtig. Denn wie gesagt, per SSH komme ich auf den Server per IPv6. Nur er findet nichts.
Hab nur die Minimal Version von Debian drauf, kein Ping oder wget und nachinstallieren geht ja nicht da er die Sourcen nicht findet.
 
Das sollte dir die Fehlermeldung eigentlich sagen, wenn du versuchst, die Paketlisten zu holen. Stehen in der resolv.conf denn Nameserver mit ihrer IPv6-Adresse drin? Ansonsten eintragen, z.B. die von Google.
Ansonsten die VMs mit einer privaten IPv4-Adresse ausstatten und dann auf dem Host NAT nutzen - so lassen sich später bei Bedarf auch einzelne Dienste per Port-Forwarding von außen über IPv4 erreichbar machen.
 
So Internet geht. War ein IP Fehler, wie gesagt mit den vielen IPs wird man Irre.
Interfaces des Host (die bridge)
Code:
# vmbr2: IPv6
auto vmbr2
iface vmbr2 inet6 static
address xxxx:xxx:160:12ce::[COLOR="Red"]3[/COLOR]
netmask 64
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv6/conf/all/proxy_ndp
post-up echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
post-up echo 1 > /proc/sys/net/ipv6/conf/default/forwarding
post-up /sbin/ip -f inet6 neigh add proxy xxxx:xxx:160:12ce::[COLOR="red"]3[/COLOR] dev vmbr2
post-up /sbin/ip -f inet6 route add xxxx:xxx:160:12ce::[COLOR="red"]4[/COLOR] dev vmbr2

config der VM
Code:
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = vmbr2
lxc.rootfs = /var/lib/lxc/enterprise/rootfs
lxc.rootfs.backend = dir
lxc.network.ipv6 = xxxx:xxx:160:12ce::[COLOR="red"]4[/COLOR]
# ip-adresse des lxc-hosts
lxc.network.ipv6.gateway = xxxx:xxx:160:12ce::[COLOR="red"]3[/COLOR]
# Common configuration
lxc.include = /usr/share/lxc/config/debian.common.conf

# Container specific configuration
lxc.tty = 4
lxc.utsname = enterprise
lxc.arch = amd64

interfaces der VM:
Code:
auto lo
iface lo inet loopback

iface eth1 inet6 static
  address xxxx:xxx:160:12ce::[COLOR="red"]4[/COLOR]
  netmask 64
  gateway xxxx:xxx:160:12ce::[COLOR="red"]3[/COLOR]
  dns-nameservers  2a01:4f8:0:a0a1::add:1010 2a01:4f8:0:a102::add:9999
in die in /etc/resolv.conf der VM
Code:
nameserver 2a01:4f8:0:a0a1::add:1010
nameserver 2a01:4f8:0:a102::add:9999
nameserver 2a01:4f8:0:a111::add:9898
 
Back
Top