Я хочу иметь рабочий узел на моем сервере, который находится за NAT (то есть не может публично выставлять порты). Я думал, что это не проблема, но оказывается, что она одна:
На этом сервере за NAT я запускаю:
docker swarm join --token SWMTKN-1... X.X.X.X:2377
, который, в свою очередь, добавляет сервер в рой. Я не уверен, откуда исходит "внутренний" IP-адрес, но на traefik у меня тогда есть новый сервер http://10.0.1.126:8080
(10.0.1.126
определенно не является publi c IP), если я исполняю c внутри контейнера traefik:
docker exec -it 80f9cb33e24c sh
Я могу пропинговать каждый сервер / узел / работник в списке на traefik, кроме нового. Почему?
Когда я присоединяюсь к рою, как это, на работнике за vpn:
docker swarm join --advertise-addr=tun0 --token SWMTKN-1-... X.X.X.X:2377
Я вижу нового партнера в моей сети от менеджера:
$ docker network inspect traefik
...
"Peers": [
...
{
"Name": "c2f01f1f1452",
"IP": "12.0.0.2"
}
]
, где 12.0.0.2
и tun0
- это интерфейс vpn от менеджера к серверу за NAT. К сожалению, когда я запускаю:
$ nmap -p 2377,2376,4789,7946 12.0.0.2
Starting Nmap 7.70 ( https://nmap.org ) at 2020-05-04 11:01 EDT
Nmap scan report for 12.0.0.2
Host is up (0.017s latency).
PORT STATE SERVICE
2376/tcp closed docker
2377/tcp closed swarm
4789/tcp closed vxlan
7946/tcp open unknown
, я вижу, что порты закрыты для docker работника, что странно?
Также, если я использую nmap -p 8080 10.0.1.0/24
внутри контейнера traefik на менеджере я получаю:
Nmap scan report for app.6ysph32io2l9q74g6g263wed3.mbnlnxusxv2wz0pa2njpqg2u1.traefik (10.0.1.62)
Host is up (0.00033s latency).
PORT STATE SERVICE
8080/tcp open http-proxy
на успешного роя работника, который имеет IP-адрес внутренней сети 10.0.1.62
, но я получаю:
Nmap scan report for app.y7odtja923ix60fg7madydia3.jcfbe2ke7lzllbvb13dojmxzq.traefik (10.0.1.126)
Host is up (0.00065s latency).
PORT STATE SERVICE
8080/tcp filtered http-proxy
на новый роевой узел. Почему это фильтруется? Что я делаю не так?