ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как освободить порт 53, используемый systemd-resolved в Ubuntu

Ubuntu. Как освободить порт 53, используемый systemd-resolved

Ubuntu по умолчанию поддерживает прослушивание порта 53 с разрешением systemd. Если вы хотите запустить собственный DNS-сервер, вы не можете, потому что порт 53 уже используется, поэтому вы получите сообщение об ошибке, подобное этой: «listen tcp 0.0.0.0:53: bind: address already in use».

В этой статье объясняется, как запретить systemd-resolved использовать порт 53 в Ubuntu. Инструкции были протестированы на Ubuntu 20.04, но они также должны работать на других версиях Ubuntu, например, Ubuntu 18.04, предстоящем Ubuntu 20.10, а также в дистрибутивах Linux на основе Ubuntu, таких как Pop! _OS, Zorin OS, Elementary OS, Linux Mint и других. В принципе, это работает в любой системе, имеющей systemd версии 232 или новее.

Чтобы узнать, используется ли порт 53 в вашей системе, используйте:

sudo lsof -i :53

 

Пример вывода, показывающий, что systemd-resolved использует порт 53 в системе Ubuntu 20.04 по умолчанию:

$ sudo lsof -i :53

COMMAND   PID            USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 610 systemd-resolve   12u  IPv4  19377      0t0  UDP localhost:domain 
systemd-r 610 systemd-resolve   13u  IPv4  19378      0t0  TCP localhost:domain (LISTEN)

 

Если вы не получаете никакого вывода, это означает, что порт 53 не используется.

 

Как запретить systemd-resolved использовать порт 53 в Ubuntu

Стоит отметить, что вы можете освободить порт 53, просто раскомментировав  DNSStubListener и установив для него значение no в /etc/systemd/resolved.conf. Остальные шаги предназначены для включения DNS-сервера – без него ваша система не сможет разрешать какие-либо доменные имена, поэтому вы не сможете посещать веб-сайты в веб-браузере и т. д.

1. Отредактируйте /etc/systemd/resolved.conf с помощью текстового редактора (как root), например, откройте его с помощью текстового редактора консоли Nano:

sudo nano /etc/systemd/resolved.conf

 

И раскомментируйте (удалите #с начала строки) строку DNS= и строку DNSStubListener=. Затем измените значение DNS= в этом файле на DNS-сервер, который вы хотите использовать (например, 127.0.0.1 для использования локального прокси, 1.1.1.1 для использования Cloudflare DNS и т. д.), А также измените значение DNSStubListener= с yes на no.

Вот как должен выглядеть файл после того, как вы внесли эти изменения (мы используем 1.1.1.1 в качестве DNS-сервера здесь, то есть Cloudflare DNS):

[Resolve]
DNS=1.1.1.1
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no
DNSStubListener=no
#ReadEtcHosts=yes

 

Чтобы сохранить файл с помощью текстового редактора Nano, нажмите Ctrl + x, затем введите y и нажмите Enter.

2. Создание символической ссылки для /run/systemd/resolve/resolv.conf на /etc/resolv.conf в качестве пункта назначения:

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

 

Здесь параметр -s предназначен для создания символической, а не жесткой ссылки и -f предназначен для удаления любых существующих файлов назначения (поэтому он удаляется, /etc/resolv.conf если она существует).

3. Перезагрузите вашу систему.

Порт 53 теперь должен быть свободен в вашей системе Ubuntu, и вы больше не должны получать таких ошибок, как “listen tcp 127.0.0.1:53: bind: address already in use”.

Вы можете проверить, используется ли порт 53 или нет, запустив его sudo lsof -i :53- если порт 53 не используется, эта команда не должна показывать никаких выходных данных.

 

Как отменить изменения

Вы хотите отменить внесенные изменения, следуя инструкциям в этой статье? Это то, что вы должны сделать.

1. Начните с редактирования /etc/systemd/resolved.conf в текстовом редакторе (как root), например откройте его в текстовом редакторе консоли Nano:

sudo nano /etc/systemd/resolved.conf

 

И закомментируйте (добавьте # перед строкой), DNS=а DNSStubListener=no затем сохраните файл. Чтобы сохранить файл с помощью текстового редактора Nano, нажмите Ctrl + x, затем введите y и нажмите Enter.

2 . Удалите символическую ссылку /etc/resolv.conf:

sudo rm /etc/resolv.conf

 

3 . Перезагрузите вашу систему.

Exit mobile version