TL; DR Пытается замаскировать все от Docker
с firewalld
вручную.
Я только начал использовать firewalld
на моей машине Debian 10, так как я хочу узнать, как это работает.
У меня есть Docker
установлен на хосте, и я хочу самостоятельно управлять брандмауэром, чтобы узнать больше о том, что делает Docker, какие правила и т.д. это применяется, когда создаются контейнеры и как работает firewalld.
Поскольку Debian 10 использует nftables
по умолчанию и использовать какой-то iptables
оболочку, чтобы иметь возможность использовать iptables
команды для создания правил брандмауэра. Docker
работает просто отлично, когда --iptables
включен.
Однако я хочу использовать firewalld
с nftables
серверную часть и пропустить все, что связано с iptables
так как это просто сбивает с толку. Так что в /etc/systemd/system/multi-user.target.wants/docker.service
Я добавил --iptables=false
так что Docker не вмешивается в брандмауэр.Я сбросил все правила iptables и т.д., И пока все хорошо.
Теперь перейдем к моей проблеме.
Все контейнеры могут получить доступ к хосту и друг к другу, но не к Интернету.Поскольку все они работают на 172.17.0.0/ 16, а мой хост находится на 192.168.9.0/ 24, мне нужно замаскировать трафик из контейнеров.
Я не могу найти много информации об управлении брандмауэром вручную при использовании Docker, и поскольку я новичок в firewalld, я просто предполагаю.
Мои интерфейсы следующие:
eno1 (main interface)docker0 (docker bridge)veth******* (one for each container)
все veth
интерфейсы находятся в docker0
мост.
Поэтому я подумал, что мог бы создать новую зону под названием docker
и замаскировать все, начиная с docker0
мост.
~# firewall-cmd --permanent --new-zone=docker~# firewall-cmd --permanent --zone=docker --change-interface=docker0~# firewall-cmd --permanent --zone=docker --add-rich-rule='rule family="ipv4" source address=172.17.0.0/16 masquerade'~# firewall-cmd --reload
Перечисление активных зон дает мне это:
~# firewall-cmd --get-active-zonesdocker interfaces: docker0public interfaces: eno1
Я все еще не могу получить доступ к Интернету из контейнеров.Я понятия не имею, правильный ли это путь или чего мне не хватает.Любая помощь приветствуется.