web-dev-qa-db-fra.com

atteindre le conteneur lxd à partir du réseau local

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.

5
Paradiesstaub

Il y a plusieurs façons d'accomplir ce que vous voulez.

  1. Transférer les ports requis de l'hôte à l'invité
  2. Réseaux de route
  3. Dispositifs de pont

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:

  1. Créer un périphérique de pont sur l'hôte
  2. Ajouter eth0 ou enp3s0 à ce pont
  3. Définir l'adresse de l'hôte sur le pont (pas enp3s0)
  4. 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
    
5
Manwe

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
0
pmatulis