title: Docker Swarm mode routing mesh not working with wireguard VPN
body: <p>I'm trying to setup a 3 node Docker swarm cluster on Hetzner cloud, using wireguard VPN (setup on interface <code>wg0</code>) to build the local network between nodes. Networking works fine across nodes using VPN IP (ports <code>7946/tcp</code> , <code>7946/udp</code> and <code>4789/udp</code> are open as reported <a href="https://docs.docker.com/v17.09/engine/swarm/ingress/" rel="noreferrer">here</a>). I start docker swarm cluster with the following commands:</p>
  
  <pre><code>docker swarm init --advertise-addr wg0 --listen-addr wg0
  docker swarm join --token SWMTKN-1-xxx --advertise-addr wg0 --listen-addr wg0 10.0.0.1:2377
  </code></pre>
  
  <p>If I try to run a service on this swarm, it seems to run correctly, every container can reach the other on different node and inspecting them, they join the ingress network and an overlay network created by me, as expected. The problem arises when I try to access from outside the service exposed port; it only works if I target the node where the container is running, so it seems that the routing mesh is not correctly working. I've not found any error in docker logs or syslog.</p>
  
  <p>Note: I'm using docker <code>18.06.1-ce</code></p>