Я использую рабочий стол Ubuntu 14.04 (точнее, Xubuntu) и пытаюсь заблокировать внешний доступ к локально запущенному Postgres порт 5432 с iptables. Это мои iptables -S
-A INPUT -i lo -p tcp -m tcp --dport 5432 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5432 -j DROP
и iptables -L
:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:postgresql
DROP tcp -- anywhere anywhere tcp dpt:postgresql
Но каким-то образом приложение сетевого сканера на моем Android, подключенное к тому же Wi-Fi, все еще может его видеть. Я могу дополнительно протестировать его с помощью утилиты PSQL на моем Android, и действительно, я могу видеть все свои таблицы. Что мне не хватает?
Изменить: возможно, стоит упомянуть, что это Postgres, работающий в контейнере докеров. Возможно, это как-то связано с этим.
Покопался еще раз.Это похоже на поведение Docker, которое изменяет цепочку iptables FORWARD.
Chain FORWARD (policy DROP)
target prot opt source destination
DOCKER-OVERLAY all -- anywhere anywhere
DOCKER-ISOLATION all -- anywhere anywhere
DOCKER all -- anywhere anywhere
Chain DOCKER (2 references)
target prot opt source destination
ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:postgresql
Этот веб-сайт описывает проблему.
Чтобы Docker не перенаправлял весь доступ к вашему контейнеру, укажите 127.0.0.1
при запуске контейнер.
docker run -p 127.0.0.1:5432:5432 postgres