Как правильно отключить systemd -для порта 53, чтобы избежать конфликта с dnsmasq в Ubuntu 20.04…?

Насколько я могу судить, ядро ​​Linux не отправляет SIGTERMсамо по себе пользовательским процессам.(SIGTERMиспользуется внутренне с потоками ядра :, так ядро ​​​​запрашивает остановку потока ядра.)

Ядро посылает SIGKILLпользовательским процессам по собственному желанию, в ряде случаев. Например, OOM killer убивает свою цель с помощью SIGKILL; некоторые операторы ядра приводят к SIGKILL; различные сбои памяти могут привести к SIGKILLс.

Когда операционная система выключается, процессы останавливаются с помощью SIGTERMи SIGKILL, но эти сигналы не поступают из ядра (или не напрямую — вызовkill()с pid 0 или отрицательным pid приведет к тому, что ядро ​​отправит сигнал нескольким процессам ). Они исходят от диспетчера служб, завершающего свои службы, и от различных последних -рвов -уничтожения -всех программ режима приложений -, которые являются частью механизма управления системой :, например. скриптkillprocsван Смуренбург rc, скриптkillprocsOpenRC и программаsystemd-shutdown.

Когда ядро ​​выключается или перезагружается, оно не заботится о процессах и не уничтожает их (подробности см. в reboot(); игнорируйте вариант LINUX_REBOOT_CMD_RESTART2системного вызова, вы не можете использовать аргумент команды для обработки процессов ).

2
22.10.2020, 14:29
1 ответ

По умолчанию systemd-resolvedобеспечивает «проверку заглушки DNS/DNSSEC-резольвера» на «IP-адресе 127.0.0.53», порт 53. Вы можете проверить это:

$ sudo netstat -tulpn | grep LISTEN

tcp        0      0 0.0.0.0:5355            0.0.0.0:*               LISTEN      787/systemd-resolve 
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      787/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      923/sshd: /usr/sbin 
tcp6       0      0 :::5355                 :::*                    LISTEN      787/systemd-resolve 
tcp6       0      0 :::22                   :::*                    LISTEN      923/sshd: /usr/sbin 

Поскольку порт 53 используется по умолчанию для DNS-трафика, как вы указали, именно здесь существует ваш конфликт.

systemd-resolvedможно настроить для работы несколькими различными способами, а резолвер-заглушку можно даже полностью отключить. Вот один из способов сделать это:

sudo systemctl edit systemd-resolved.service

Откроется текстовый редактор, в котором вы можете переопределить конфигурацию по умолчанию systemd-resolvedтаким образом, чтобы вы могли легко вернуться, если это не то, что вам нужно. Введите этот текст, сохраните и выйдите из редактора:

[Resolve]
DNSStubListener=no

IIRC перезагружается и перезапускается systemd-resolved. А теперь посмотрите, где systemd-resolvedслушает:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2494/sshd           
tcp        0      0 0.0.0.0:5355            0.0.0.0:*               LISTEN      8033/systemd-resolv 
tcp6       0      0 :::22                   :::*                    LISTEN      2494/sshd           
tcp6       0      0 :::5355                 :::*                    LISTEN      8033/systemd-resolv 

Теперь dnsmasqдолжен иметь возможность прослушивать порт 53.

Эта команда редактирования systemctl создает файл переопределения в /etc/systemd/resolved.conf.d, который вы можете просто удалить, если хотите отменить эти изменения.Вам также нужно будет запустить эти команды для перезагрузки и перезапускаsystemd-resolved:

sudo systemctl daemon-reload
sudo systemctl restart systemd-resolved
1
18.03.2021, 22:55

Теги

Похожие вопросы