LINUX.ORG.RU

Автозагрузка firewalld ломает DNS (CentOS 7)

 , ,


0

1

Всем здравствуйте! Данный топик является логическим продолжением вот этого Проблема с DNS в docker-контейнере (комментарий), но так как проблему удалось локализовать и конкретизировать, решил оформить её отдельно. В общем, имеется CentOS 7 в докер-контейнере. После того, как добавляю firewalld в автозагрузку:

[root@docker /]# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.

...после ребута прекращает работать преобразование доменных имён в IP (DNS):

[root@docker /]# ping ya.ru
ping: ya.ru: Name or service not known

Стоит отключить автозагрузку и снова ребутнуться, как DNS начинают работать вновь:

[root@docker /]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

[root@docker /]# reboot

[root@docker /]# ping ya.ru
PING ya.ru (87.250.250.242) 56(84) bytes of data.
64 bytes from ya.ru (87.250.250.242): icmp_seq=1 ttl=58 time=15.8 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=2 ttl=58 time=15.8 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=3 ttl=58 time=16.0 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=4 ttl=58 time=16.2 ms

Сам по себе факт запуска firewalld работе DNS не мешает. То есть если в запущенной системе выполнить «systemctl start fiewalld», то firewalld корректно запускается, DNS работает. Проблема где-то в самой автозагрузке, как будто возникает какой-то конфликт и что-то, что связано с DNS, не запускается. Вот содержимое файла службы, на который делаются симв. ссылки при автозагрузке:

[root@docker /]# cat /usr/lib/systemd/system/firewalld.service
[Unit]
Description=firewalld - dynamic firewall daemon
Before=network-pre.target
Wants=network-pre.target
After=dbus.service
After=polkit.service
Conflicts=iptables.service ip6tables.service ebtables.service ipset.service
Documentation=man:firewalld(1)

[Service]
EnvironmentFile=-/etc/sysconfig/firewalld
ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS
ExecReload=/bin/kill -HUP $MAINPID
# supress to log debug and error output also to /var/log/messages
StandardOutput=null
StandardError=null
Type=dbus
BusName=org.fedoraproject.FirewallD1
KillMode=mixed

[Install]
WantedBy=multi-user.target
Alias=dbus-org.fedoraproject.FirewallD1.service

Может, достаточно порядок загрузки firewalld изменить, в конец его как-нибудь переместить? После чего тогда лучше поставить? Уже не знаю, что думать.

Прочитал предыдущую вашу тему, и хотел бы посоветовать взглянуть в сторону systemd-nspawn. Всё-таки докер предлагает несколько другой паттерн использования, чем запуск внутри полноценной центоси с systemd и большим количеством демонов. А вот nspawn для этого подходит отлично - изнутри практически не отличим от виртуальной машины.

pod ★★
()

Все нормальные люди первым делом сносят этот уродский firewalld.

Во-первых, это же просто надстройка над iptables.

Во-вторых, нафик не нужен болтающийся зазря демон.

IMHO, такой же дурной костыль, как netplan в бубунте.

slamd64 ★★★★★
()

Кстати, не по теме, но пригодиться. Дабы лишних ребутов не делать

Службу «выключать» можно так:

systemctl disable --now firewalld

Deleted
()

И в докере контейнер будет использовать DNS 127.0.11 если я правильно помню. Скорее всего дело в том, что firewalld запускается раньше чем dockerd, и соответственно ломает сеть ему.

Лучше выпилить его(firewalld) совсем, ибо костыль ещё тот..

Deleted
()

Сравни правила firewalld при запуске автозагрузкой и вручную. До кучи можешь посмотреть, какие аргументы (то самое $FIREWALLD_ARGS в конфиге юнита) переданы, когда он запущен так и так.

mathcrosp ★★
()
Ответ на: комментарий от Deleted

Скорее всего дело в том, что firewalld запускается раньше чем dockerd

dockerd запущен на хосте, а firewalld — в контейнере.

mathcrosp ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.