tcp правило iptables не работает с цепочкой DOCKER -USER - PullRequest
0 голосов
/ 23 февраля 2020

Мы используем контейнер 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, но не работает с ограничением порта? Как я могу это исправить?

...