Я запустил кластер docker swarm. Он предоставляет 2 порта: 80 (перенаправляет на Nginx) и 3000 (перенаправляет на панель Grafana).
Я хотел бы сделать контейнер Grafana доступным только с локального хоста (установлен OpenVPN).
Я не могу установить
ports:
- 10.8.0.1:3000:3000
поскольку docker swarm игнорирует его (WARN[0000] ignoring IP-address (10.8.0.1:3000:3000/tcp) service will listen on '0.0.0.0'
).
$ netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 741/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 903/sshd
tcp6 0 0 :::2377 :::* LISTEN 886/dockerd
tcp6 0 0 :::7946 :::* LISTEN 886/dockerd
tcp6 0 0 :::80 :::* LISTEN 886/dockerd
tcp6 0 0 :::22 :::* LISTEN 903/sshd
tcp6 0 0 :::3000 :::* LISTEN 886/dockerd
Я попытался использовать брандмауэр ufw, но обнаружил, что Docker изменяет iptables. Так что мне нужно отредактировать iptables.
У меня нет опыта в этом. Может ли кто-нибудь написать пошагово, что мне делать, чтобы заблокировать контейнер Grafana от публичного доступа?
Думаю, это будет полезно для многих. Я не единственный, кто борется с этим.