Outils pour utilisateurs

Outils du site


reseau:internetetlxc

Comment connecter un container LXC à l'Internet ?

Cet howto a été conçu pour fonctionner dans l'environnement virtualisé netLXC

Prérequis

La machine virtuelle Debian netLXC doit communiquer avec l'Internet ce qui suppose donc que la machine physique hôte communique également avec l'Internet ! CQFD !
root@netLXC2018:/home/btssio# ping www.free.fr -c 4
PING www.free.fr (212.27.48.10) 56(84) bytes of data.
64 bytes from www.free.fr (212.27.48.10): icmp_seq=1 ttl=63 time=12.5 ms
64 bytes from www.free.fr (212.27.48.10): icmp_seq=2 ttl=63 time=14.1 ms
64 bytes from www.free.fr (212.27.48.10): icmp_seq=3 ttl=63 time=15.3 ms
64 bytes from www.free.fr (212.27.48.10): icmp_seq=4 ttl=63 time=16.2 ms

--- www.free.fr ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 12.575/14.589/16.205/1.374 ms
root@netLXC2018:/home/btssio# 

Si tel n'est pas le cas, bien vérifier que la MV netLXC est attaché au bridge br0wan :

root@netLXC2018:/home/btssio# ip addr show dev br0wan
3: br0wan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 08:00:27:f9:39:de brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global br0wan
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fef9:39de/64 scope link 
       valid_lft forever preferred_lft forever
root@netLXC2018:/home/btssio#
Ici, l'adresse 10.0.2.15 a été attribuée par le serveur DHCP de VirtualBox.

Au besoin, vous pouvez solliciter manuellement cette attribution :

root@netLXC2018:/home/btssio# dhclient -v br0wan
Internet Systems Consortium DHCP Client 4.3.1
Copyright 2004-2014 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/br0wan/08:00:27:f9:39:de
Sending on   LPF/br0wan/08:00:27:f9:39:de
Sending on   Socket/fallback
DHCPREQUEST on br0wan to 255.255.255.255 port 67
DHCPACK from 10.0.2.2
RTNETLINK answers: File exists
bound to 10.0.2.15 -- renewal in 38607 seconds.
root@netLXC2018:/home/btssio# 

Partie 1 : attachement d'un container LXC à l'internet

Bien entendu, nous supposons ici que le container a été créé !

Nous allons ici insérer les lignes infra en fin du fichier de configuration du container “serveur” :

/var/lib/lxc/serveur/config
Vérifiez quand même que ces lignes n'existent pas déjà… ou ne soient commentées…
# Attachement à l'Internet

lxc.net.0.type = veth
lxc.net.0.flags = up
lxc.net.0.link = br0wan
lxc.net.0.name = eth0wan
lxc.net.0.veth.pair = vbr0wan

Lancement du container et vérifications usuelles

root@serveur:~# ip addr show dev eth0wan
48: eth0wan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 1e:f4:3f:4f:55:c5 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.21/24 brd 10.0.2.255 scope global eth0wan
       valid_lft forever preferred_lft forever
    inet6 fe80::1cf4:3fff:fe4f:55c5/64 scope link 
       valid_lft forever preferred_lft forever
root@serveur:~# 

Si l'interface eth0wan du container n'a pas d'adresse IP !, nous devons donc solliciter le serveur DHCP de virtualbox :

root@serveur:~# dhclient -v eth0wan
Internet Systems Consortium DHCP Client 4.3.1
Copyright 2004-2014 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0wan/22:e4:ff:bc:41:14
Sending on   LPF/eth0wan/22:e4:ff:bc:41:14
Sending on   Socket/fallback
DHCPREQUEST on eth0wan to 255.255.255.255 port 67
DHCPACK from 10.0.2.2
bound to 10.0.2.16 -- renewal in 34321 seconds.
root@serveur:~# 

Vérification :

root@serveur:~# ping www.free.fr -c 4
PING www.free.fr (212.27.48.10): 56 data bytes
64 bytes from 212.27.48.10: icmp_seq=0 ttl=63 time=13,459 ms
64 bytes from 212.27.48.10: icmp_seq=1 ttl=63 time=14,248 ms
64 bytes from 212.27.48.10: icmp_seq=2 ttl=63 time=12,938 ms
64 bytes from 212.27.48.10: icmp_seq=3 ttl=63 time=13,355 ms
--- www.free.fr ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 12,938/13,500/14,248/0,474 ms
root@serveur:~# 

PARTIE 2

Question qui mérite d'être posée... Peut-on attacher plusieurs containers LXC à br0wan pour qu'ils puissent simultanément accéder à l'Internet ?

D'expérience, si vous attachez 2 containers à br0wan, cela se passe mal… Dans le meilleur des cas, un seul container arrive à se connecter à l'Internet… Comment est-ce possible ? 8-)

Un schéma pour faire comprendre !

Le serveur DHCP VirtualBox d'adresse IP 10.0.2.2/24 délivre

  • une adresse à la carte de la MV Debian netLXC —> br0wan 10.0.2.15/24
  • une adresse IDENTIQUE à chaque container LXC —> 10.0.2.16
Chaque container LXC aura la même adresse IP ! Beau cas de conflit d'adresses IP ! 8-)

Comment cela est-il possible ?

En fait, il ne faut pas perdre de vue le mode de virtualisation utilisé par LXC… LXC se concentre sur les conteneurs systèmes. Ceux-ci offrent un environnement aussi proche que possible de celui d'une machine virtuelle, mais sans le surcoût associé à l'utilisation d'un noyau séparé ou à la simulation de matériel. Relisez au besoin ceci...

De ce fait, tous les containers LXC se partage le noyau de la machine hôte (la MV Debian netLXC) aussi le serveur DHCP de VirtualBox considère l'ensemble des containers comme une seule machine… donc délivre une adresse IP identique pour tous les containers !!

Existe-t-il une solution Docteur ?

Pour faire accéder à l'Internet tous les containers, la solution déjà expliquée dans le Quick Guide netLXC, consiste, comme dans pratiquement tous les réseaux locaux, à passer par un routeur (de type LAN/WAN) intermédiaire, ici le routeur(L3).

L'interface “vers_br0wan” (interface WAN en fait) du routeur(L3) sera renseignée au niveau IP par le serveur DHCP VirtualBox…

Derrière le routeur(L3) se situe le LAN, où les équipements, comme dans tout réseau, pourront être configurés en IP statiques ou en Ip dynamiques via un serveur DHCP (un autre container non reproduit sur le schéma !)

Une fois tout ça configuré, le serveur DHCP de VirtualBox ne renseigne qu'une seule adresse (l'adresse IP WAN du routeur). Le LAN est lui masqué et… vit sa vie… notamment au niveau de l'adressage IP !!

~~DISCUSSION~~

reseau/internetetlxc.txt · Dernière modification: 2020/06/08 12:13 (modification externe)