Page 1 of 3

Container has no network

Posted: 09 Jan 2021, 02:47
by mukmuk
Hello,

I'm trying to get docker via ssh to work. F2-221, TOS 4.1.30, Docker-App 17.05.5. My goal is having a reverse proxy (Traefik) and some containers like nextcloud and other stuff. To achieve this I'm using this tutorial: https://www.digitalocean.com/community/ ... untu-20-04

The traefik container comes up, but is not able to use the network connection through the newly created bridge called web. I can't reach the Traefik dashboard and the container itself can't lookup any DNS names:

Code: Select all

Unable to obtain ACME certificate for domains \"removed-for-forum\": cannot get ACME client get directory at 'https://acme-v02.api.letsencrypt.org/directory': Get \"https://acme-v02.api.letsencrypt.org/directory\": dial tcp: lookup acme-v02.api.letsencrypt.org on 127.0.0.11:53: read udp 127.0.0.1:47496->127.0.0.11:53: i/o timeout
I've took the tutorial and used it on a fresh debian 10 machine and it works right as it should. I'm getting crazy over this. To prevent any misconfiguration by me, I've already reinstalled the Docker-App and deleted all remaining files.

Is there any service/iptables setting or something like that, that is preventing the connection? What can I do?



PS: to "unlock" port :80 and :443 I've disabled "jumpd" in /etc/nasips.ini as stated in this post: viewtopic.php?p=4017#p4017


Edit: this happens with any bridge that is created by "docker network create $bridgename". I've made all kinds of tests with a standard alpine container etc - no success on getting network to the containers.

Re: Container has no network

Posted: 10 Jan 2021, 23:47
by matt_30
Oddly enough I have had the same problem

I tried to telnet acme-v02.api.letsencrypt.org 443 but this failed.

I went to do the same command on my pc and this worked.

Is this a bug?

Re: Container has no network

Posted: 11 Jan 2021, 19:11
by mukmuk
Thanks matt_30, this is more or less good (or not so good) to hear. I thought I was going crazy, because I could've made an error.

Let's wait for the support then. Unless someone else has an idea. :)

Re: Container has no network

Posted: 13 Jan 2021, 05:20
by matt_30
I will keep you in the loop. I did try to disable jumpd but this had no effect.

Oddly when I tried to setup swag I had to redirect port 443 -> 444 then in docker compose pipe 444 - >443 (same with port 80).

Will post more when I find more out.

Matt.

Re: Container has no network

Posted: 13 Jan 2021, 06:54
by mukmuk
I've probably found a solution. While tinkering with "route", I saw that the docker bridges get random IPs from an unknown range. The F2-221 has 2 physical NICs - I have only one of them (eth0) running. eth1 has - despite being disabled - an IP from the subnet 169.254.0.0 assigned!

Take a look here:

Code: Select all

# ip a
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 6c:bf:b5:01:5f:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.36/24 brd 192.168.178.255 scope global eth0
11: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 6c:bf:b5:01:5f:57 brd ff:ff:ff:ff:ff:ff
    inet 169.254.253.106/16 brd 169.254.255.255 scope global eth1
       valid_lft forever preferred_lft forever

# docker network create newbridge
# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
c9ad54e42073        bridge              bridge              local
83ec6ae8033b        host                host                local
7528eb0f37de        newbridge         bridge              local

# ip addr show br-7528eb0f37de
37: br-7528eb0f37de: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:f7:66:65:c0 brd ff:ff:ff:ff:ff:ff
    inet 169.254.251.231/16 brd 169.254.255.255 scope global br-7528eb0f37de
       valid_lft forever preferred_lft forever
My LAN runs on eth0 192.168.178.0. The disabled eth1 interface has an IP inside 169.0.0.0. The bridge, that docker has created, got a correct route, but a wrong ip (169.254.251.231) on its interface. Adding the docker virtual ip to the interface, the container can connect to the internet:

Code: Select all

~~~ inside debian container on newbridge ~~~
root@9ad61a932cad:/# ping 172.19.0.1
PING 172.19.0.1 (172.19.0.1) 56(84) bytes of data.
^C
--- 172.19.0.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 64ms


~~~ on the NAS ~~~
# ip addr add 172.19.0.1/24 dev br-7528eb0f37de


~~~ inside debian container again ~~~
root@9ad61a932cad:/# ping 172.19.0.1
PING 172.19.0.1 (172.19.0.1) 56(84) bytes of data.
64 bytes from 172.19.0.1: icmp_seq=1 ttl=64 time=0.209 ms
64 bytes from 172.19.0.1: icmp_seq=2 ttl=64 time=0.133 ms
^C
--- 172.19.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 18ms
rtt min/avg/max/mdev = 0.133/0.171/0.209/0.038 ms
root@9ad61a932cad:/# ping google.com
PING google.com (216.58.212.142) 56(84) bytes of data.
64 bytes from ams15s21-in-f14.1e100.net (216.58.212.142): icmp_seq=1 ttl=118 time=24.4 ms
64 bytes from ams15s21-in-f14.1e100.net (216.58.212.142): icmp_seq=2 ttl=118 time=33.9 ms
64 bytes from ams15s21-in-f14.1e100.net (216.58.212.142): icmp_seq=3 ttl=118 time=22.6 ms
^C
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 6ms
rtt min/avg/max/mdev = 22.625/26.951/33.854/4.933 ms
I guess that any part of the bridge creation takes a wrong IP or getting confused by eth1. I'm not sure on this one, as I have no knowledge about the underlying functions. But apparently the connection works now.

I'll try to setup my complete installation with Traefik etc. tomorrow and keep y'all updated!

Re: Container has no network

Posted: 13 Jan 2021, 07:08
by mukmuk
Sadly the edit window is closed already. I just wanted to add that the route sometimes takes the wrong subnet, too. Manually adjusting the route needs to be done in that case, too.

Re: Container has no network

Posted: 13 Jan 2021, 16:27
by matt_30
The 169.254 range is the apipa used in DHCP on windows for finding devices (https://www.webopedia.com/definitions/apipa/)

I would expect to see that.

What does your route table show you? im hoping the 169.254 range is not your default gateway.

Matt.

Re: Container has no network

Posted: 13 Jan 2021, 16:39
by mukmuk
I'm aware of the 169-range. As soon as the container starts, the bridge gets routed over this subnet. But only when the first container starts...

Code: Select all

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.178.1   0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.178.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0

# docker network create heymatt
acfe7629b9c70b38429a8ab972c2cc53d520c17c432130f7740e1fb5b9e1a799
# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
c9ad54e42073        bridge              bridge              local
acfe7629b9c7        heymatt             bridge              local
83ec6ae8033b        host                host                local
61ee2316d6d1        none                null                local

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.178.1   0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-acfe7629b9c7
192.168.178.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0

--- fine up to here ---

second shell: # docker run --rm -it --name debian4 --network heymatt debian:buster

first shell: # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.178.1   0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 br-acfe7629b9c7
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 vethaf32b60
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.178.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0

# ip route list
default via 192.168.178.1 dev eth0 src 192.168.178.36 
169.254.0.0/16 dev br-acfe7629b9c7 proto kernel scope link src 169.254.251.125 
169.254.0.0/16 dev vethaf32b60 proto kernel scope link src 169.254.251.81 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.178.0/24 dev eth0 scope link src 192.168.178.36
Modifying the route as well as the interface of br-acfe7629b9c7 to the docker assigned subnet 172.18.0.0/16 seem to work fine.

Re: Container has no network

Posted: 13 Jan 2021, 17:40
by TMS
mukmuk wrote: 09 Jan 2021, 02:47 I'm trying to get docker via ssh to work. F2-221, TOS 4.1.30, Docker-App 17.05.5. My goal is having a reverse proxy (Traefik) and some containers like nextcloud and other stuff. To achieve this I'm using this tutorial: https://www.digitalocean.com/community/ ... untu-20-04
Hi,
According to this tutorial, there is no need to add the line command --netweb web (it will affect the use of other ports). Can it run if you try again?

Re: Container has no network

Posted: 13 Jan 2021, 18:26
by mukmuk
Thanks for your reply. The web-bridge is needed for traefik to discover further services as well as using it via docker-compose. In the tutorial it reads:
The docker provider enables Traefik to act as a proxy in front of Docker containers. You’ve configured the provider to watch for new containers on the web network, which you’ll create soon.

-snip-

The Docker network is necessary so that you can use it with applications that are run using Docker Compose.
Further down you'll find the docker-compose example with the instruction

Code: Select all

networks:
  web:
    external: true
  internal:
    external: false
Attached there is a quick sketch of the network/container design, so you can take a better look at the setup. Neither the reverse proxy traefik, nor any other services inside the web-bridge can access any network connection. No DNS, no ping etc.