Centos iptables не работает с правилами докера - PullRequest
0 голосов
/ 18 мая 2019

Я установил службу Docker:

docker run --rm --name some-nginx -d -p 8080:80 nginx:stable-alpine

Тогда я добавил для него правило iptable:

PORT=8080
 /sbin/iptables -A OUTPUT -p tcp --dport $PORT -m state --state NEW,ESTABLISHED      -j ACCEPT
 /sbin/iptables -A INPUT  -p tcp --sport $PORT -m state --state ESTABLISHED  -j ACCEPT

Когда я пытаюсь проверить, открыт ли порт, он говорит, что он открыт:

$netstat -anp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      11211/docker-proxy

Когда я пытаюсь исследовать больше, оно кажется открытым:

 iptables-save | grep 8080
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 172.17.0.3:80
-A INPUT -p tcp -m tcp --sport 8080 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 8080 -m state --state NEW,ESTABLISHED -j ACCEPT

Я вижу, что докер добавил некоторые правила, но мои правила присутствуют.

Проблема в том, что я не могу подключиться к nginx через данный порт!

telnet XX.XX.XX.XX 8080
Trying XX.XX.XX.XX...
telnet: Unable to connect to remote host: Connection timed out

Когда я отключаю iptables, он работает даже с браузером, предоставляющим стартовую страницу nginx.

Как включить iptables или docker для работы с данным портом?

1 Ответ

0 голосов
/ 18 мая 2019

У меня есть несколько страниц, которые вы можете прочитать.

https://fralef.me/docker-and-iptables.html
https://riptutorial.com/docker/topic/9201/iptables-with-docker

У меня также есть Linux, попробуйте это здесь:

iptables -A INPUT -p tcp -m tcp --dport xxx -j ACCEPT
iptables -A OUTPUT -p tcp --sport xxx -m state --state ESTABLISHED -j ACCEPT
or
iptables -A OUTPUT -o eth0 -p tcp --dport xxx -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport xx -m state --state ESTABLISHED -j ACCEPT

Дайте мне знать, если это поможет.

...