Я не являюсь активным пользователем систем на основе Unix. И у меня есть некоторые проблемы с открытием порта сервера (80) для публики и перенаправлением его на работающий контейнер.
Итак, у меня есть работающий контейнер на работающем сервере Ubuntu (IP-адрес 167.86.106.109), IP-адрес контейнера — 127.0.200.1 (и порт 80 открыт).
Бег ТЕЛНЕТ 127.0.200.1 80
на 167.86.106.109, и я могу сделать GET, который возвращает 200. Извне у меня есть тайм-аут
Я сделал следующее, но я все еще не могу получить доступ к 167.86.106.109 через порт 80 извне (ошибка тайм-аута):
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -m conntrack --ctstate NEW -j DNAT --to 127.0.200.1:80
iptables -t nat -A PREROUTING -m conntrack --ctstate УСТАНОВЛЕНО, СВЯЗАННО -j ПРИНЯТЬ
iptables -A РАЗМЕЩЕНИЕ -t nat -j МАСКАРАД
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ПРИНЯТЬ
iptables -t nat -A ВЫВОД -i eth0 -p tcp --dport 80 -m conntrack --ctstate NEW -j DNAT --to 127.0.200.1:80
iptables-сохранить > /etc/iptables.rules
ufw разрешить http
Очевидно, я сделал что-то не так, но что?
Вывод докер пс
:
2f7617d72299 polk-auction-ui:latest "/docker-entrypoint.â¦" 52 минуты назад Up 52 минуты 127.0.200.1:80->80/tcp polk-auction-ui
Это на Ubuntu 20.04 (64 бит). Контейнер представляет собой контейнер Docker (v 20.10.14)
Дополнительная информация о моей текущей настройке:
ОС (IP 167.86.106.109) работает на VPS, док-контейнер, к которому я хочу получить доступ извне, работает под управлением nginx со следующей конфигурацией:
пользователь nginx;
рабочие_процессы 1;
error_log /var/log/nginx/error.log предупреждение;
pid /var/run/nginx.pid;
События {
worker_connections 1024;
}
http {
включить /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$статус $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
журнал_доступа /var/log/nginx/access.log основной;
отправить файл включен;
#tcp_npush включен;
keepalive_timeout 65;
gzip включен;
#include /etc/nginx/conf.d/*.conf;
сервер {
слушать 80;
место расположения / {
корень /usr/share/nginx/html;
индекс index.html index.htm;
try_files $uri $uri//index.html;
#try_files $uri =404;
}
}
}
Результат подробный статус ufw
:
Статус: активен
Ведение журнала: включено (низкий уровень)
По умолчанию: запрещать (входящие), разрешать (исходящие), запрещать (маршрутизируемые)
Новые профили: пропустить
К действию от
-- ------ ----
22/tcp РАЗРЕШИТЬ ВХОД ВСЕГДА
80/tcp РАЗРЕШИТЬ ВХОД В любом месте
30333 РАЗРЕШИТЬ ВХОД ВСЕГДА
22/tcp (v6) РАЗРЕШИТЬ ВХОД ВСЕГДА (v6)
80/tcp (v6) РАЗРЕШИТЬ ВХОД ВСЕГДА (v6)
30333 (v6) РАЗРЕШИТЬ ВХОД ВСЕГДА (v6)
Результат iptables -L -v -n
: (Многое исходит от самого докера)
Цепочка INPUT (политика DROP 37 пакетов, 2168 байт)
pkts bytes target prot opt in out source target
32669 4524K f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 многопортовые порты 22
2374K 1737M ufw-before-loging-input все -- * * 0.0.0.0/0 0.0.0.0/0
2374K 1737M ufw-до-ввода все -- * * 0.0.0.0/0 0.0.0.0/0
274K 16M ufw-after-input все -- * * 0.0.0.0/0 0.0.0.0/0
262K 16M ufw-after-loging-input все -- * * 0.0.0.0/0 0.0.0.0/0
262K 16M ufw-reject-input все -- * * 0.0.0.0/0 0.0.0.0/0
262K 16M ufw-track-input все -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ПРИНЯТЬ tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Цепочка FORWARD (политика DROP 0 пакетов, 0 байт)
pkts bytes target prot opt in out source target
167M 118G DOCKER-USER все -- * * 0.0.0.0/0 0.0.0.0/0
167M 118G DOCKER-ISOLATION-STAGE-1 все -- * * 0.0.0.0/0 0.0.0.0/0
888K 166M ПРИНЯТЬ все -- * br-4c0567f529d0 0.0.0.0/0 0.0.0.0/0 ctstate СВЯЗАННО, УСТАНОВЛЕНО
19186 1150K DOCKER все -- * br-4c0567f529d0 0.0.0.0/0 0.0.0.0/0
0 0 ПРИНЯТЬ все -- br-4c0567f529d0 !br-4c0567f529d0 0.0.0.0/0 0.0.0.0/0
19186 1150K ПРИНЯТЬ все -- br-4c0567f529d0 br-4c0567f529d0 0.0.0.0/0 0.0.0.0/0
51M 59G ПРИНЯТЬ все -- * br-56fce7b8bc16 0.0.0.0/0 0.0.0.0/0 ctstate СВЯЗАННО,УСТАНОВЛЕНО
3433 971K DOCKER все -- * br-56fce7b8bc16 0.0.0.0/0 0.0.0.0/0
39M 3429M ПРИНЯТЬ все -- br-56fce7b8bc16 !br-56fce7b8bc16 0.0.0.0/0 0.0.0.0/0
3397 969K ПРИНЯТЬ все -- br-56fce7b8bc16 br-56fce7b8bc16 0.0.0.0/0 0.0.0.0/0
42M 53G ПРИНЯТЬ все -- * br-9316082e3f65 0.0.0.0/0 0.0.0.0/0 ctstate СВЯЗАННО, УСТАНОВЛЕНО
3397 969K DOCKER все -- * br-9316082e3f65 0.0.0.0/0 0.0.0.0/0
33M 2699M ПРИНЯТЬ все -- br-9316082e3f65 !br-9316082e3f65 0.0.0.0/0 0.0.0.0/0
3397 969K ПРИНЯТЬ все -- br-9316082e3f65 br-9316082e3f65 0.0.0.0/0 0.0.0.0/0
37132 233M ПРИНЯТЬ все -- * 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
13310 1453K ПРИНЯТЬ все -- 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
0 0 ufw-before-loging-forward all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-before-forward all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-after-forward all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-after-log-forward all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-reject-forward all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ufw-track-forward all -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка OUTPUT (политика ACCEPT 0 пакетов, 0 байт)
pkts bytes target prot opt in out source target
1835K 83M ufw-before-loging-output all -- * * 0.0.0.0/0 0.0.0.0/0
1835K 83M ufw-до-вывода все -- * * 0.0.0.0/0 0.0.0.0/0
2843 253K ufw-после-вывода все -- * * 0.0.0.0/0 0.0.0.0/0
2843 253K ufw-after-log-output все -- * * 0.0.0.0/0 0.0.0.0/0
2843 253K ufw-reject-output all -- * * 0.0.0.0/0 0.0.0.0/0
2843 253K ufw-track-output all -- * * 0.0.0.0/0 0.0.0.0/0
Сеть DOCKER (4 наименования)
pkts bytes target prot opt in out source target
0 0 ПРИНЯТЬ TCP -- !br-9316082e3f65 br-9316082e3f65 0.0.0.0/0 172.18.0.2 TCP dpt:8080
0 0 ПРИНЯТЬ TCP -- !br-56fce7b8bc16 br-56fce7b8bc16 0.0.0.0/0 172.19.0.2 TCP dpt:8080
0 0 ПРИНЯТЬ TCP -- !br-4c0567f529d0 br-4c0567f529d0 0.0.0.0/0 172.20.0.2 TCP dpt:3306
0 0 ПРИНЯТЬ TCP -- !br-4c0567f529d0 br-4c0567f529d0 0.0.0.0/0 172.20.0.3 TCP dpt:8080
0 0 ПРИНЯТЬ TCP -- !br-56fce7b8bc16 br-56fce7b8bc16 0.0.0.0/0 172.19.0.5 TCP dpt:30333
0 0 ПРИНЯТЬ TCP -- !br-9316082e3f65 br-9316082e3f65 0.0.0.0/0 172.18.0.5 TCP dpt:30333
0 0 ПРИНЯТЬ TCP -- !br-56fce7b8bc16 br-56fce7b8bc16 0.0.0.0/0 172.19.0.3 TCP dpt:80
Сеть DOCKER-ISOLATION-STAGE-1 (1 ссылка)
pkts bytes target prot opt in out source target
0 0 DOCKER-ISOLATION-STAGE-2 все -- br-4c0567f529d0 !br-4c0567f529d0 0.0.0.0/0 0.0.0.0/0
39M 3429M DOCKER-ISOLATION-STAGE-2 все -- br-56fce7b8bc16 !br-56fce7b8bc16 0.0.0.0/0 0.0.0.0/0
33M 2699M DOCKER-ISOLATION-STAGE-2 все -- br-9316082e3f65 !br-9316082e3f65 0.0.0.0/0 0.0.0.0/0
13310 1453K DOCKER-ISOLATION-STAGE-2 все -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
167M 118G ВОЗВРАТ все -- * * 0.0.0.0/0 0.0.0.0/0
Сеть DOCKER-ISOLATION-STAGE-2 (4 ссылки)
pkts bytes target prot opt in out source target
0 0 УДАЛИТЬ все -- * br-4c0567f529d0 0.0.0.0/0 0.0.0.0/0
0 0 УДАЛИТЬ все -- * br-56fce7b8bc16 0.0.0.0/0 0.0.0.0/0
0 0 УДАЛИТЬ все -- * br-9316082e3f65 0.0.0.0/0 0.0.0.0/0
0 0 УДАЛИТЬ все -- * docker0 0.0.0.0/0 0.0.0.0/0
73M 6129M ВОЗВРАТ все -- * * 0.0.0.0/0 0.0.0.0/0
Сеть DOCKER-USER (1 ссылка)
pkts bytes target prot opt in out source target
167M 118G ВОЗВРАТ все -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка f2b-sshd (1 ссылка)
pkts bytes target prot opt in out source target
28666 4185K ВОЗВРАТ все -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-after-forward (1 ссылка)
pkts bytes target prot opt in out source target
Цепочка ufw-after-input (1 ссылка)
pkts bytes target prot opt in out source target
0 0 ufw-skip-to-policy-input udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:137
0 0 ufw-skip-to-policy-input udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:138
81 4104 ufw-skip-to-policy-input TCP -- * * 0.0.0.0/0 0.0.0.0/0 TCP dpt:139
11583 599K ufw-skip-to-policy-input TCP -- * * 0.0.0.0/0 0.0.0.0/0 TCP dpt:445
0 0 ufw-skip-to-policy-input udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ufw-skip-to-policy-input udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:68
0 0 ufw-skip-to-policy-input all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE соответствует dst-type BROADCAST
Цепочка ufw-after-log-forward (1 ссылка)
pkts bytes target prot opt in out source target
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 ограничение: в среднем 3 пакета в минуту 10 флагов LOG 0 префикс уровня 4 "[UFW BLOCK]"
Цепочка ufw-after-log-input (1 ссылка)
pkts bytes target prot opt in out source target
12797 753K LOG all -- * * 0.0.0.0/0 0.0.0.0/0 ограничение: в среднем 3/мин пакет 10 флагов LOG 0 префикс уровня 4 "[UFW BLOCK]"
Цепочка ufw-after-log-output (1 ссылка)
pkts bytes target prot opt in out source target
Цепочка ufw-after-output (1 ссылка)
pkts bytes target prot opt in out source target
Цепочка ufw-before-forward (1 ссылка)
pkts bytes target prot opt in out source target
0 0 ПРИНЯТЬ все -- * * 0.0.0.0/0 0.0.0.0/0 ctstate СВЯЗАННО,УСТАНОВЛЕНО
0 0 ПРИНЯТЬ icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 3
0 0 ПРИНЯТЬ icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 11
0 0 ПРИНЯТЬ icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 12
0 0 ПРИНЯТЬ icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8
0 0 ufw-user-forward all -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-before-input (1 ссылка)
pkts bytes target prot opt in out source target
5083 453K ПРИНЯТЬ все -- вот * 0.0.0.0/0 0.0.0.0/0
41195 5355K ПРИНЯТЬ все -- * * 0.0.0.0/0 0.0.0.0/0 ctstate СВЯЗАННО,УСТАНОВЛЕНО
4634 827K ufw-logging-deny all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
4634 827K DROP all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
0 0 ПРИНЯТЬ icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 3
0 0 ПРИНЯТЬ icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 11
0 0 ПРИНЯТЬ icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 12
4586 357K ПРИНЯТЬ icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8
211K 74M ПРИНЯТЬ udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spt:67 dpt:68
1823K 109M ufw-not-local все -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ПРИНЯТЬ udp -- * * 0.0.0.0/0 224.0.0.251 udp dpt:5353
0 0 ПРИНЯТЬ udp -- * * 0.0.0.0/0 239.255.255.250 udp dpt:1900
1823K 109M ufw-пользовательский ввод все -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-before-log-forward (1 ссылка)
pkts bytes target prot opt in out source target
Цепочка ufw-before-log-input (1 ссылка)
pkts bytes target prot opt in out source target
Цепочка ufw-before-log-output (1 ссылка)
pkts bytes target prot opt in out source target
Цепочка ufw-before-output (1 ссылка)
pkts bytes target prot opt in out source target
5089 453K ПРИНЯТЬ все -- * lo 0.0.0.0/0 0.0.0.0/0
1722K 74M ПРИНЯТЬ все -- * * 0.0.0.0/0 0.0.0.0/0 ctstate СВЯЗАННО, УСТАНОВЛЕНО
2488 227K ufw-user-output all -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-log-allow (0 ссылок)
pkts bytes target prot opt in out source target
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 ограничение: в среднем 3/мин пакет 10 флагов LOG 0 префикс уровня 4 "[UFW ALLOW]"
Цепочка ufw-log-deny (2 упоминания)
pkts bytes target prot opt in out source target
3643 763K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate НЕВЕРНЫЙ предел: в среднем 3/мин пакет 10
671 48807 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 предел: в среднем 3/мин пакет 10 флагов LOG 0 уровень 4 префикс "[UFW BLOCK]"
Сеть ufw-not-local (1 ссылка)
pkts bytes target prot opt in out source target
1823K 109M RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE соответствует dst-type LOCAL
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE соответствует dst-типу MULTICAST
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE соответствует dst-типу BROADCAST
0 0 ufw-logging-deny all -- * * 0.0.0.0/0 0.0.0.0/0 предел: в среднем 3/мин пакет 10
0 0 УДАЛИТЬ все -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-reject-forward (1 ссылка)
pkts bytes target prot opt in out source target
Цепочка ufw-reject-input (1 ссылка)
pkts bytes target prot opt in out source target
Цепочка ufw-reject-output (1 ссылка)
pkts bytes target prot opt in out source target
Цепочка ufw-skip-to-policy-forward (0 ссылок)
pkts bytes target prot opt in out source target
0 0 УДАЛИТЬ все -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-skip-to-policy-input (7 ссылок)
pkts bytes target prot opt in out source target
11664 603K УДАЛИТЬ все -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-skip-to-policy-output (0 ссылок)
pkts bytes target prot opt in out source target
0 0 ПРИНЯТЬ все -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-track-forward (1 ссылка)
pkts bytes target prot opt in out source target
Цепочка ufw-track-input (1 ссылка)
pkts bytes target prot opt in out source target
Цепочка ufw-track-output (1 ссылка)
pkts bytes target prot opt in out source target
346 43729 ПРИНЯТЬ TCP -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW
1599 153K ПРИНЯТЬ udp -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW
Цепочка ufw-user-forward (1 ссылка)
pkts bytes target prot opt in out source target
Цепочка ufw-user-input (1 ссылка)
pkts bytes target prot opt in out source target
2237 132K ПРИНЯТЬ TCP -- * * 0.0.0.0/0 0.0.0.0/0 TCP dpt:22
2240 114K ПРИНЯТЬ TCP -- * * 0.0.0.0/0 0.0.0.0/0 TCP dpt:80
1663K 100M ПРИНЯТЬ TCP -- * * 0.0.0.0/0 0.0.0.0/0 TCP dpt:30333
0 0 ПРИНЯТЬ udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:30333
Цепочка ufw-user-limit (0 ссылок)
pkts bytes target prot opt in out source target
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min пакет 5 Флаги LOG 0 префикс уровня 4 "[UFW LIMIT BLOCK]"
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 отклонить-с icmp-порт-недоступен
Цепочка ufw-user-limit-accept (0 ссылок)
pkts bytes target prot opt in out source target
0 0 ПРИНЯТЬ все -- * * 0.0.0.0/0 0.0.0.0/0
Цепочка ufw-user-loging-forward (0 ссылок)
pkts bytes target prot opt in out source target
Цепочка ufw-user-loging-input (0 ссылок)
pkts bytes target prot opt in out source target
Цепочка ufw-user-log-output (0 ссылок)
pkts bytes target prot opt in out source target
Цепочка ufw-user-output (1 ссылка)
pkts bytes target prot opt in out source target
РЕДАКТИРОВАТЬ:
Docker-compose использовал:
версия: "3.8"
сети:
в горошек:
внешний: правда
Кусама:
внешний: правда
Сервисы:
Полк-аукцион-UI:
изображение: polk-auction-ui:последний
имя_контейнера: polk-auction-ui
порты:
- "127.0.200.1:80:80"
сети:
- в горошек
- кусама
изображение построено так:
# Шаг сборки
ОТ node:14 как сборка
РАБОЧИЙКАТАЛОГ /приложение
КОПИРОВАТЬ package.json yarn.lock ./
БЕГ пряжи установить
КОПИРОВАТЬ . ./
RUN сборка пряжи: prod
# Выполнить шаг
ОТ nginx: стабильный-альпийский
скопируйте nginx.conf /etc/nginx/nginx.conf
КОПИРОВАТЬ --from=build /app/dist /usr/share/nginx/html
ЭКСПОЗИЦИЯ 80
CMD ["nginx", "-g", "демон выключен;"]