Контейнер Docker не может выполнять DNS-запросы с запущенным FirewallD

472
ollien

Во время работы FirewallD все DNS-запросы не выполняются и блокируются брандмауэром. Запуск tcpdump -i docker0во время работы ping google.comв контейнере показывает мне

21:27:02.683342 IP 172.17.0.2.35118 > google-public-dns-a.google.com.domain: 54430+ AAAA? google.com. (28) 21:27:02.683399 IP 172.17.0.1 > 172.17.0.2: ICMP host google-public-dns-a.google.com unreachable - admin prohibited filter, length 64 

Pinging, 8.8.8.8например, или любой другой абсолютный IP, работает нормально.

Если я явно добавлю docker0или 172.17.0.0/16в trustedзону, запросы пройдут. Тем не менее, другой из моих машин в том же дистрибутиве (openSUSE Tumbleweed) работает нормально.

Я порвал через мою конфигурацию FirewallD, и там не упоминается ни об этой подсети, ни об docker0интерфейсе. Я действительно не уверен, что происходит и где искать. Вы можете найти мои действующие правила FirewallD ниже.

sudo firewall-cmd --get-active-zones public  sudo firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: wlp4s0 sources:  services: dhcpv6-client ports:  protocols:  masquerade: no forward-ports:  source-ports:  icmp-blocks:  rich rules:  
3
Вы смотрели на [это] (https://opsech.io/posts/2017/May/23/docker-dns-with-firewalld-on-fedora.html) или [это] (https: //unix.stackexchange .com / вопросы / 199966 / как конфигурируемые-CentOS-7-firewalld к Allow-докеров-контейнеры свободного доступа к-й)? JakeGould 5 лет назад 0
Да. Они оба предлагают добавить интерфейс к доверенному, который, как я сказал, будет работать в OP, но я пытаюсь выяснить основную причину, а не просто добавить его в качестве доверенного интерфейса. Моя другая машина работает без этого, поэтому я, конечно, озадачен. ollien 5 лет назад 0
Затем вы должны сравнить конфигурацию между двумя машинами. Вы написали здесь активную зону («Активные зоны - это зоны, которые имеют привязку к интерфейсу или источнику»), это не означает, что в других зонах нет других правил, действующих на порту 53, или добавлено взаимодействие с iptables докера. правила A.B 5 лет назад 0
Я сравнил их столько, сколько я могу, но я не могу ничего найти. Есть ли что-то конкретное, что может быть полезным? Я искал высоко и низко безрезультатно. ollien 5 лет назад 0
вы все равно можете сбросить результаты iptables "низкого уровня" с помощью `iptables-save -c` на обоих и вручную попытаться найти различия. Но и firewalld, и Docker, вероятно, добавляют много цепочек и правил (возможно, с мостами, имеющими разные встроенные идентификаторы в названии), что затрудняет это. Я не думаю о более простом методе (который все еще может быть найден) A.B 5 лет назад 0

0 ответов на вопрос