dnsmasq: не удалось создать прослушивающий сокет для порта 53: адрес уже используется


16

Я настраивал сервер, как показано ниже по ссылке https://help.ubuntu.com/community/Dnsmasq.

root@user-desktop:/etc/init.d# sudo apt-get install dnsmasq
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  dnsmasq
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/15.4 kB of archives.
After this operation, 120 kB of additional disk space will be used.
Selecting previously unselected package dnsmasq.
(Reading database ... 146283 files and directories currently installed.)
Unpacking dnsmasq (from .../dnsmasq_2.59-4_all.deb) ...
Processing triggers for ureadahead ...
Setting up dnsmasq (2.59-4) ...
 * Starting DNS forwarder and DHCP server dnsmasq                                                                                                                                                            
dnsmasq: failed to create listening socket for port 53: Address already in use [fail]
invoke-rc.d: initscript dnsmasq, action "start" failed.

Ответы:


8

У меня та же проблема, что и у вас. Я думаю, что это правда с 12.10, но эта тема была закрыта до выхода 12.10.

Занимаясь поиском (главным образом вдохновленный здесь ), я нашел это решение:

  • редактировать /etc/NetworkManager/NetworkManager.confфайл с вашим любимым редактором
  • прокомментировать строку dns=dnsmasq
  • перезапустите сетевой менеджер: sudo service network-manager restart

Но в вашей конфигурации dnsmasq ( /etc/dnsmasq.conf) вы должны быть уверены, что прослушивает локальные DNS-запросы со строкой listen-address=127.0.0.1.

Если вы измените конфигурацию dnsmasq, не забудьте запустить sudo /etc/init.d/dnsmasq restart

Я надеюсь, это поможет.


2
Комментирование не dns=dnsmasqотменяет цель установки DNSmasq. Я внес listen-address=127.0.0.1изменения, и теперь, похоже, они работают нормально.

1
Нет. Вы удерживаете NetworkManager от запуска dnsmasq и запускаете его независимо.
MrMas

4

У меня такая же проблема.

dnsmasq-baseбыл установлен и прослушан на порту 53, препятствующем dnsmasqзапуску.

Для этой же цели можно использовать dnsmasq-baseinsead dnsmasq: просто используйте другой каталог конфигурации: тот, который находится в Network Managerпапке:

/etc/NetworkManager/dnsmasq.d/

3

Проверьте, что прослушивает порт 53 (домен) с помощью:

sudo ss -lp "sport = :domain"

Отключите все службы, работающие на этом порту. Это обычно systemd-resolved.

Я собираюсь также, maskчтобы он не запускался автоматически при перезагрузке.

sudo systemctl disable systemd-resolved
sudo systemctl mask systemd-resolved

Чтобы отменить то, что вы сделали:

sudo systemctl unmask systemd-resolved
sudo systemctl enable systemd-resolved

Также sudo update-rc.d systemd-resolved disableможет остановить автоматический запуск при загрузке, но я не проверял. Используйте defaultsвместо, disableчтобы отменить команду.


Или вы можете изменить порт, который прослушивает dnsmasq, отредактировав файл конфигурации:

sudo nano /etc/dnsmasq.conf

Нажмите Ctrl+ Wи введите listen-address=и нажмите Enter.

Раскомментируйте строку и добавьте 127.0.0.1 с портом, отличным от 53, например:

listen-address=127.0.0.1#5300

0

РЕДАКТИРОВАТЬ: немного погуглил, и я нашел решение . Кажется, что сетевой менеджер зависит от пакета, называемого «dnsmasq-base», который предоставляет некоторые функции dnsmasq. Запись Dnsmasq в Ubuntu Wiki гласит, что

«Обратите внимание, что пакет« dnsmasq »мешает сетевому менеджеру, который может использовать« dnsmasq-base »для предоставления услуг DHCP при совместном использовании подключения к Интернету. Поэтому, если вы используете сетевой менеджер (хорошо только в простых установках), установите dnsmasq». -base, но не dnsmasq. Если у вас более сложная настройка, удалите сетевой менеджер, используйте dnsmasq или подобное программное обеспечение (bind9, dhcpd и т. д.) и настройте вещи вручную. "

Другими словами: вы хотите использовать dnsmasq? Тогда тебе лучше знать, что ты делаешь. Упомянутое ранее решение предлагает заменить dnsmasq-base на dnsmasq следующим образом (первая команда также удалит network-manager):

sudo apt-get remove dnsmasq-base
sudo apt-get install dnsmasq
sudo apt-get install network-manager network-manager-gnome

И вот некоторые общие комментарии по поиску того, что блокирует ваши порты: Вы можете найти то, что прослушивает какой порт, используя lsof:

lsof -Pn +M -i4

перечислит порты IPv4 из-за -i4, в то время как

lsof -Pn +M -i6

перечислит порты IPv6. Или просто введите

lsof -Pn +M | grep ':53 (LISTEN)'

Это должно (надеюсь) рассказать вам, что использует порт 53. -PnКоммутаторы командной строки предотвращают преобразование номера порта / IP-адреса хоста в имена.

Или запустить

netstat -utlnp

3
Не удаляйте dnsmasq-base; от этого зависит пакет dnsmasq!
jdthood

3
Будьте осторожны при этом, после запуска у sudo apt-get remove dnsmasq-baseменя не осталось сетевого подключения, поэтому я не смог сделать следующие шаги! Оказалось, что решением было запустить dhclient для получения нового IP-адреса.
Гленжамин

Укушенный этим .. я должен был повторно включить
системное
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.