Назад | Перейти на главную страницу

Не удается получить доступ к порту привязки докеров с общедоступного IP-адреса

Я запустил образ портера, используя:

docker run -d -P -p 9000:9000 portainer/portainer

Но можно получить доступ к сети только через порт 9000 локально, используя lynx. Я разрешаю брандмауэр на порт 9000 как входящий, так и исходящий, так что это не должно быть проблемой.

$ sudo iptables -t filter -L -n -v | grep 9000 0 0 ПРИНЯТЬ tcp -! docker0 docker0 0.0.0.0/0 172.17.0.2 tcp dpt: 9000

Но мне сложно интерпретировать таблицу NAT, которая может быть подозреваемой.

$ sudo iptables -t nat -L -n -v Цепочка PREROUTING (политика ПРИНЯТЬ 7 пакетов, 420 байтов) pkts bytes target prot opt ​​in out
источник назначение 415 24676 ДОКЕР все - * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE соответствует dst-type LOCAL

Цепочка INPUT (политика ACCEPT 1 пакеты, 60 байтов) pkts bytes target
prot отказаться от источника назначения

Цепочка OUTPUT (политика ACCEPT 0 пакетов, 0 байтов) pkts bytes target
prot opt ​​in out source destination
0 0 DOCKER all - * * 0.0.0.0/0! 127.0.0.0/8 ADDRTYPE соответствует dst-type LOCAL

Цепочка POSTROUTING (политика ACCEPT 0 пакетов, 0 байтов) pkts bytes target prot opt ​​in source destination

0     0 MASQUERADE  all  --  *      !docker0  172.17.0.0/16        0.0.0.0/0           
0     0 MASQUERADE  tcp  --  *      *       172.17.0.2           172.17.0.2           tcp dpt:9000

Цепочка DOCKER (2 ссылки) pkts bytes target prot opt ​​in source destination
0 0 ВОЗВРАТ все - docker0 * 0.0.0.0/0 0.0.0.0/0
0 0 DNAT tcp -! Docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 9000 до: 172.17.0.2: 9000

Может кто-нибудь помочь мне здесь?

Обновление1:

Я попробовал ту же команду на другом сервере Ubuntu с той же версией докера, но она работает. Единственная разница в таблице NAT после запуска и привязки контейнера - это запись POSTROUTING, в которой говорится:

pkts bytes target prot opt ​​in source назначение
0 0 MASQUERADE все - * eth0 10.0.0.0/8 0.0.0.0/0

Но я думаю, это может не быть связано, или нет?

Ubuntu 16.04 Docker версии 17.05.0-ce, сборка 89658be

Спасибо всем за помощь в комментариях,

Оказывается, я просто использую nmap <host> чтобы проверить открытие порта и обнаружил, что 9000 не открывается, хотя внутренний брандмауэр / iptables говорят иначе.

Затем я вспоминаю, что у VPS, который я использую, есть еще один внешний уровень брандмауэра, который я также должен настроить. Глупый, но я изучаю базовый процесс трассировки / cmds. Спасибо, ребята!