У меня есть проблема, аналогичная этой статье здесь, хотя я не думаю, что мои диапазоны IP-адресов сталкиваются: https://forums.docker.com/t/service-is-unreachable-on-host-ip-localhost-works/78515
Я открываю веб-сервер через докер на порту 443, и я могу получить к нему доступ через 127.0.0.1:443
так и из-за пределов хоста. Я не могу получить доступ к этому веб-серверу через IP-адрес хоста, и я теряю голову, почему это может быть.
Чтобы сделать вещи воспроизводимыми, позвольте мне запустить контейнер netcat (который прослушивает все интерфейсы внутри контейнера) — очевидно, у меня та же проблема на порту 443:
$ docker run -ti --rm -p 8182:8182 chilcano/netcat:jessie -vvl -p 8182
->>>>>> (Выполнение '/bin/netcat -vvl -p 8182') <<<<<<-
слушаю на [любом] 8182 ...
Docker прослушивает все локальные интерфейсы на 8182 â
$lsof -i :8182
КОМАНДА PID ПОЛЬЗОВАТЕЛЬ ТИП FD УСТРОЙСТВО РАЗМЕР/ВЫКЛ НАЗВАНИЕ УЗЛА
docker-pr 11152 root 4u IPv4 1183427772 0t0 TCP *:8182 (СЛУШАТЬ)
Подключение к netcat в докере с хоста работает при использовании localhost â
$nc-vz 127.0.0.1 8182
локальный [127.0.0.1] 8182 открытый
проблема начинается, когда используя IP-адрес локального хоста и пытаясь получить доступ к док-контейнеру вот так ❤️
$nc-vz 192.168.176.111 8182
ramirez.domain.local [192.168.176.111] 8182: Сеть недоступна
Я могу просто пропинговать хост и получить доступ к другим вещам, которые выполняются на хосте через его IP-адрес (например, запуск netcat -vvl -p 8182
прямо на хосте вместо докер контейнера все работает).
При звонке на этот же IP с другого устройства в сети все работает❗ , значит это локальная проблема докер-хоста
$nc-vz 192.168.176.111 8182
Подключение к порту 192.168.176.111 8182 [tcp/*] выполнено успешно!
Таблица маршрутизации, а также iptables мне кажутся прекрасными, но я не эксперт.
$ ip а
# анонимный mac адрес
6: ovs_eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1
ссылка/эфир xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
инет 192.168.176.111/24 brd 192.168.176.255 область глобальная ovs_eth0
valid_lft навсегда
маршрут:
$ IP-маршрут
по умолчанию через 192.168.176.1 dev ovs_eth0 src 192.168.176.111
169.254.0.0/16 dev ovs_eth1 ссылка на область ядра прото src 169.254.106.154 мертвая ссылка вниз
172.17.0.0/16 dev docker0 ссылка на область ядра proto src 172.17.0.1
192.168.127.0/24 dev docker-976f9fbf ссылка на область действия ядра src 192.168.127.1
192.168.128.0/24 dev docker-bd2edfee ссылка на протоядро области src 192.168.128.1
192.168.176.0/24 dev ovs_eth0 ссылка на область ядра прото src 192.168.176.111
192.168.254.0/24 dev docker-2de11f77 ссылка на область действия ядра src 192.168.254.1
IP-таблицы:
$ iptables -L -v -n
Цепочка INPUT (политика ACCEPT 78080 пакетов, 24M байт)
pkts bytes target prot opt in out source target
210M 299G DOS_PROTECT все -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка FORWARD (политика ACCEPT 0 пакетов, 0 байт)
pkts bytes target prot opt in out source target
218M 241G DEFAULT_FORWARD все -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка OUTPUT (политика ACCEPT 76525 пакетов, 24M байт)
pkts bytes target prot opt in out source target
Сеть DEFAULT_FORWARD (1 ссылка)
pkts bytes target prot opt in out source target
230K 276M DOCKER-USER все -- * * 0.0.0.0/0 0.0.0.0/0
231K 276M DOCKER-ISOLATION-STAGE-1 все -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ПРИНЯТЬ все -- * docker-8cfed06e 0.0.0.0/0 0.0.0.0/0 ctstate СВЯЗАННО, УСТАНОВЛЕНО
0 0 DOCKER все -- * docker-8cfed06e 0.0.0.0/0 0.0.0.0/0
0 0 ПРИНЯТЬ все -- docker-8cfed06e !docker-8cfed06e 0.0.0.0/0 0.0.0.0/0
0 0 ПРИНЯТЬ все -- docker-8cfed06e docker-8cfed06e 0.0.0.0/0 0.0.0.0/0
7254K 23G ПРИНЯТЬ все -- * docker-f06ef418 0.0.0.0/0 0.0.0.0/0 ctstate СВЯЗАННО, УСТАНОВЛЕНО
19005 1140K DOCKER все -- * docker-f06ef418 0.0.0.0/0 0.0.0.0/0
4614K 1362M ПРИНЯТЬ все -- docker-f06ef418 !docker-f06ef418 0.0.0.0/0 0.0.0.0/0
19005 1140K ПРИНЯТЬ все -- docker-f06ef418 docker-f06ef418 0.0.0.0/0 0.0.0.0/0
2270K 2424M ПРИНЯТЬ все -- * docker-f95cea99 0.0.0.0/0 0.0.0.0/0 ctstate СВЯЗАННО, УСТАНОВЛЕНО
1549K 101M DOCKER все -- * docker-f95cea99 0.0.0.0/0 0.0.0.0/0
1814K 1273M ПРИНЯТЬ все -- docker-f95cea99 !docker-f95cea99 0.0.0.0/0 0.0.0.0/0
1549K 101M ПРИНЯТЬ все -- docker-f95cea99 docker-f95cea99 0.0.0.0/0 0.0.0.0/0
14M 8442M ПРИНЯТЬ все -- * docker-45bb17c5 0.0.0.0/0 0.0.0.0/0 ctstate СВЯЗАННО, УСТАНОВЛЕНО
14118 846K DOCKER все -- * docker-45bb17c5 0.0.0.0/0 0.0.0.0/0
7237 714K ПРИНЯТЬ все -- docker-45bb17c5 !docker-45bb17c5 0.0.0.0/0 0.0.0.0/0
14118 846K ПРИНЯТЬ все -- docker-45bb17c5 docker-45bb17c5 0.0.0.0/0 0.0.0.0/0
5238 23M ПРИНЯТЬ все -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate СВЯЗАННО, УСТАНОВЛЕНО
0 0 DOCKER все -- * docker0 0.0.0.0/0 0.0.0.0/0
3332 216K ПРИНЯТЬ все -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 ПРИНЯТЬ все -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
Сеть DOCKER (5 наименований)
pkts bytes target prot opt in out source target
0 0 ПРИНЯТЬ tcp -- !docker-45bb17c5 docker-45bb17c5 0.0.0.0/0 192.168.254.254 tcp dpt:2375
0 0 ПРИНЯТЬ TCP -- !docker-f95cea99 docker-f95cea99 0.0.0.0/0 192.168.127.127 TCP dpt:8888
0 0 ПРИНЯТЬ TCP -- !docker-f95cea99 docker-f95cea99 0.0.0.0/0 192.168.127.168 TCP dpt:8080
0 0 ПРИНЯТЬ TCP -- !docker-f95cea99 docker-f95cea99 0.0.0.0/0 192.168.127.168 TCP dpt:443
0 0 ПРИНЯТЬ TCP -- !docker-f95cea99 docker-f95cea99 0.0.0.0/0 192.168.127.168 TCP dpt:80
0 0 ПРИНЯТЬ TCP -- !docker0 docker0 0.0.0.0/0 172.17.0.2 TCP dpt:8182
Сеть DOCKER-ISOLATION-STAGE-1 (1 ссылка)
pkts bytes target prot opt in out source target
0 0 DOCKER-ISOLATION-STAGE-2 все -- docker-8cfed06e !docker-8cfed06e 0.0.0.0/0 0.0.0.0/0
4614K 1362M DOCKER-ISOLATION-STAGE-2 все -- docker-f06ef418 !docker-f06ef418 0.0.0.0/0 0.0.0.0/0
1814K 1273M DOCKER-ISOLATION-STAGE-2 все -- docker-f95cea99 !docker-f95cea99 0.0.0.0/0 0.0.0.0/0
7237 714K DOCKER-ISOLATION-STAGE-2 все -- docker-45bb17c5 !docker-45bb17c5 0.0.0.0/0 0.0.0.0/0
3332 216K DOCKER-ISOLATION-STAGE-2 все -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
211M 239G ВОЗВРАТ все -- * * 0.0.0.0/0 0.0.0.0/0
Сеть DOCKER-ISOLATION-STAGE-2 (5 ссылок)
pkts bytes target prot opt in out source target
0 0 УДАЛИТЬ все -- * docker-8cfed06e 0.0.0.0/0 0.0.0.0/0
0 0 УДАЛИТЬ все -- * docker-f06ef418 0.0.0.0/0 0.0.0.0/0
0 0 УДАЛИТЬ все -- * docker-f95cea99 0.0.0.0/0 0.0.0.0/0
0 0 УДАЛИТЬ все -- * docker-45bb17c5 0.0.0.0/0 0.0.0.0/0
98306 8258K УДАЛИТЬ все -- * docker0 0.0.0.0/0 0.0.0.0/0
38M 19G ВОЗВРАТ все -- * * 0.0.0.0/0 0.0.0.0/0
Сеть DOCKER-USER (1 ссылка)
pkts bytes target prot opt in out source target
211M 239G ВОЗВРАТ все -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка DOS_PROTECT (1 ссылка)
pkts bytes target prot opt in out source target
13 876 RETURN icmp -- ovs_eth0 * 0.0.0.0/0 0.0.0.0/0 icmptype 8 ограничение: в среднем 1000/сек пакет 5
0 0 DROP icmp -- ovs_eth0 * 0.0.0.0/0 0.0.0.0/0 icmptype 8
270K 11M RETURN tcp -- ovs_eth0 * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x04 ограничение: в среднем 1/сек пакет 5
16881 675K DROP TCP -- ovs_eth0 * 0.0.0.0/0 0.0.0.0/0 флаги TCP: 0x17/0x04
347K 20M RETURN tcp -- ovs_eth0 * 0.0.0.0/0 0.0.0.0/0 флаги tcp: 0x17/0x02 ограничение: в среднем 10000/сек пакет 100
0 0 DROP TCP -- ovs_eth0 * 0.0.0.0/0 0.0.0.0/0 флаги TCP: 0x17/0x02