L'hôte docker CoreOS ne peut pas accéder aux conteneurs par IP; d'autres ordinateurs sur LAN peuvent

Nous avons un problème que notre server hébergeant nos conteneurs est incapable d'y accéder avec leur adresse IP, tandis que d'autres ordinateurs du réseau peuvent. Nous avons la configuration suivante pour notre réseau local:

  • Un server connecté au routeur par deux câbles (exécutant CoreOS 1068.10.0 et Docker 1.10.3)
  • Un routeur qui connecte le server et les clients
  • Un certain nombre d'ordinateurs clients qui sont tous directement connectés au routeur ou par un commutateur connecté au routeur

Notre réseau ressemble donc à ceci, très simple:

|---------| |---------| |---------| | Docker |-----------| Router |-----------| Other computers/ | Host |-----------| | | NAS/etc | |---------| |---------| |---------| 

Afin d'exposer nos conteneurs à notre réseau, nous avons suivi cette réponse: https://stackoverflow.com/a/35799206

Les commands que nous avons utilisées sont les suivantes:

  docker network create \ --subnet 192.168.0.0/16 \ --aux-address "DefaultGatewayIPv4=192.168.0.1" \ --gateway=192.168.1.1 \ -o com.docker.network.bridge.name=br-internal_lan internal_lan sudo brctl addif br-internal_lan eno1 sudo ip a del 192.168.1.1/16 dev br-internal_lan 

Jusqu'ici tout va bien. Notre server a IP 192.168.0.3 sur eno3 , ce que nous voulons. eno1 est connecté par un câble séparé au routeur et est utilisé pour le pont. Le pont obtient IP 192.168.0.83. Si nous commençons notre conteneur avec:

 docker run --net=internal_lan -d --ip 192.168.1.0 serverimage:latest 

Nous obtenons le scénario suivant:

  • Fonctionne: les conteneurs ping des clients (et vice versa)
  • Fonctionne: l'hôte ping des clients (et vice versa)
  • Travaux: Ping Bridge IP à partir de conteneurs, hôte, clients
  • Fonctionne: ping l'hôte des conteneurs
  • Travaux: exécutez le docker exec container01 /bin/bash pour accéder aux conteneurs
  • NE TRAVAILLE PAS: ping les conteneurs de l'hôte , la perte de packages est de 100%

Voici quelques exemples de parameters de notre server:

ifconfig

 br-internal_lan: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.83 netmask 255.255.0.0 broadcast 192.168.255.255 inet6 fe80::42:8cff:fe30:3b4a prefixlen 64 scopeid 0x20<link> ether 02:42:8c:30:3b:4a txqueuelen 0 (Ethernet) RX packets 430214 bytes 62591783 (59.6 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4244 bytes 546612 (533.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::225:90ff:fe5d:6b80 prefixlen 64 scopeid 0x20<link> ether 00:25:90:5d:6b:80 txqueuelen 1000 (Ethernet) RX packets 829691 bytes 296523943 (282.7 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 78684 bytes 87560787 (83.5 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device memory 0xdf400000-df47ffff eno3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.3 netmask 255.255.0.0 broadcast 192.168.255.255 inet6 fe80::225:90ff:fe5d:6b82 prefixlen 64 scopeid 0x20<link> ether 00:25:90:5d:6b:82 txqueuelen 1000 (Ethernet) RX packets 1744808 bytes 1583970565 (1.4 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1019186 bytes 1085667196 (1.0 GiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device memory 0xdf200000-df27ffff <other interfaces omitted> 

route

 default router.asus.com 0.0.0.0 UG 1024 0 0 eno3 default router.asus.com 0.0.0.0 UG 1024 0 0 br-internal_lan 172.17.0.0 * 255.255.0.0 U 0 0 0 docker0 192.168.0.0 * 255.255.0.0 U 0 0 0 eno3 192.168.0.0 * 255.255.0.0 U 0 0 0 br-internal_lan router.asus.com * 255.255.255.255 UH 1024 0 0 eno3 router.asus.com * 255.255.255.255 UH 1024 0 0 br-internal_lan 

Nous avons essayé de changer /proc/sys/net/ipv4/[eno1,eno3,br-internal_lan]/rp_filter à 2, mais cela n'a pas changé (ne sait pas s'il le faut). /proc/sys/net/ipv4/ip_forward est défini sur 1.

Quelle pourrait être une erreur avec notre configuration? Comment pouvons-nous avoir access par IP à nos conteneurs? Toute aide est appréciée, si je dois fournir des informations supplémentaires, faites-le nous savoir.

(Notez que nous exécutons actuellement Docker 1.10.3 (qui est la dernière version de Docker lors de l'utilisation de CoreOS stable), donc macvlan n'est pas une option pour nous.)

  • Itinérance sans fil avec les routeurs Mikrotik
  • Est-ce que le trafic d'accéder au file partagé localement via un path UNC dépasse encore le commutateur?
  • Chiffrer les communications sur le réseau local
  • Routage IP VPN - connections lentes
  • Quel est le goulet d'étranglement de la connection VPN?
  • Comment bloquer l'access au LAN via OpenVPN?
  • Site hôte sur réseau local
  • Syntonisation des performances réseau de Windows 7 pour LAN
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.