OS: Ubuntu 15.10
LXD: 2.0.0.rc5
J'aimerais savoir comment accéder à un conteneur depuis un autre ordinateur du même réseau local.
Adresse de mon PC (l'hôte LXD): 192.168.1.112 (enp3s0)
Conteneur Xenial: 10.0.3.181 (eth0), 10.0.4.1 (lxcbr0)
Autre PC (Fedora 23): 192.168.2.118 (wlp3s0)
Je peux cingler de l'autre PC à l'hôte de LXD et autrement.
Il y a plusieurs façons d'accomplir ce que vous voulez.
Les options 1 et 2 nécessitent l'activation d'IP-Forwarding sur l'hôte:
# run time:
Sudo sysctl -w net.ipv4.ip_forward=1
# permanent:
echo 'net.ipv4.ip_forward = 1' | Sudo tee /etc/sysctl.d/30-virt-network
Le plus simple est 1 si vous souhaitez accéder à un service spécifique tel que http (port 80) sur l'invité (vous accédez au port d'invité 80 avec l'adresse IP de l'hôte + le port), mais vous ne pouvez pas exécuter de services d'hôte sur ce même port.
# on lxd Host: (-i HOSTDEVICE to lan, usually enp3s0 or eth0)
Sudo iptables -t nat -A PREROUTING -i enp3s0 -p tcp -m tcp --dport 80 -j DNAT --to 10.0.3.181:80
# making this permanent is left to the reader (because that depends on your choice of fw setup)
L'option 2 est plus délicate et dépend de la mesure dans laquelle vous pouvez modifier votre réseau.
Vérifiez que (Sudo iptables -L -n
) indique que la chaîne FORWARD (stratégie ACCEPT) ou Sudo iptables -I FORWARD -s 192.168.2.118 -j ACCEPT
l'autorise spécifiquement. Maintenant, soit sur l'itinéraire du pare-feu de réseau 10.0.3.0/24 vers votre hôte 192.168.1.112, soit testez-le avec l'itinéraire sur 192.168.2.118.
Sudo ip route add 10.0.3.181 via 192.168.1.112 dev wlp3s0
Troisième option amènerait vos invités lxd à votre réseau local dans le cadre du réseau local. Voir Instruction convertissant eth0 (enp3s0 dans votre cas) en pont comment le faire. En bref:
eth0
ou enp3s0
à ce pontenp3s0
)Lier les périphériques invités lxd à ce pont
stop network-manager
brctl addbr br0
brctl addif br0 enp3s0
ifconfig enp3s0 up
ifconfig br0 up
dhclient br0
lxc profile edit default
- change lxcbr0 to br0
Vous devez indiquer à l'autre ordinateur comment accéder au conteneur, car celui-ci se trouve sur un sous-réseau différent de celui du conteneur. C'est-à-dire que vous devez configurer un "itinéraire". Vous trouverez ci-dessous un exemple d’itinéraire que vous pouvez créer sur l’autre ordinateur. Il dit: "pour accéder au conteneur (.181), passez d'abord par l'hôte (.112) en utilisant le périphérique situé sur le même réseau que l'hôte (eth0). Si l'autre ordinateur utilise un périphérique différent, modifiez-le en conséquence. Notez que cette route n’est pas permanente, elle survivra pas à un redémarrage. Pour savoir comment configurer une route permanente.
Sudo ip route add 10.0.3.181 via 192.168.1.112 dev eth0