Рейтинг:2

Служба Docker недоступна на хост-IP, но работает на локальном хосте

флаг cn

У меня есть проблема, аналогичная этой статье здесь, хотя я не думаю, что мои диапазоны 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
флаг jp
показать `iptables -L -v -n`
флаг cn
Я обновился с помощью `iptables -L -v -n`
флаг vn
Вы находитесь в «домашней» сети? Если так много домашних маршрутизаторов не позволяют получить доступ к вашему собственному внешнему IP-адресу. См. https://superuser.com/q/1047745/2013. Попробуйте использовать веб-прокси, например https://hidester.com/proxy/.
флаг cn
IP-адрес, к которому я пытаюсь получить доступ, является внутренним IP-адресом, а не внешним IP-адресом, то есть это просто IP-адрес, который маршрутизатор назначает моему хосту докера (в данном случае он статический). При использовании внешнего WAN IP все работает.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.