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 localhost за допомогою рядка 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-baseінadad з dnsmasqтією ж метою: просто використовуйте інший каталог конфігурацій: той, який розміщений у Network Managerпапці:

/etc/NetworkManager/dnsmasq.d/

4

Перевірте, що слухає порт 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

EDIT: деякий гугл, і я знайшов рішення . Здається, що мережевий менеджер залежить від пакета під назвою "dnsmasq-base", який забезпечує деяку функціональність dnsmasq. Запис Dnsmasq у Ubuntu Wiki стверджує, що

"Зауважте, що пакет" dnsmasq "перешкоджає Менеджеру мереж, який може використовувати" dnsmasq-base "для надання послуг DHCP під час спільного доступу до Інтернету. Тому, якщо ви використовуєте мережевий менеджер (добре в простому налаштуванні), то встановіть dnsmasq -база, але не dnsmasq. Якщо у вас є складніша настройка, видаліть мережевий менеджер, використовуйте dnsmasq або подібне програмне забезпечення (bind9, dhcpd тощо) і налаштовуйте речі вручну. "

Іншими словами: ви хочете використовувати dnsmasq? Тоді ви краще знаєте, що ви робите. Згадане раніше рішення пропонує замінити dnsmasq-base на dnsmasq наступним чином (перша команда також видалить мережевий менеджер):

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.