Мы используем контейнер Docker, и он предоставляет порт на хост-машине. Мы хотим ограничить доступ к этому порту контейнера для всех IP-адресов, кроме некоторых доверенных.
Для первого шага и упрощения проблемы я хотел закрыть порт 8070 на этом компьютере для всех IP-адресов с iptables
, но это не работает.
Как говорит Docker в своей документации , каждое правило должно быть вставлено в цепочку DOCKER -USER, чтобы оно работало, потому что все другие цепочки (такие как INPUT) будет игнорироваться Docker.
Итак, вот мое правило iptables:
-A DOCKER-USER -i eth0 -p tcp -m tcp --dport 8070 -j DROP
-A DOCKER-USER -j RETURN
После добавления этого в iptables не только порт 8070, но и все порты были сброшены.
Я попытался провести еще один эксперимент по ограничению всего IP-адреса, а не портов:
-A DOCKER-USER -i eth0 -s xxx.xxx.xxx.xxx -j DROP
Я могу убедиться, что он работает правильно и IP-адрес xxx.xxx.xxx.xxx заблокирован.
Почему Docker работает только с ограничением IP, но не работает с ограничением порта? Как я могу это исправить?