dnsmasq: gagal membuat soket pendengaran untuk port 53: Alamat sudah digunakan


16

Saya sedang menyiapkan server seperti pada tautan di bawah ini 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.

Jawaban:


8

Saya mendapatkan masalah yang sama seperti Anda. Saya pikir itu benar sejak 12.10, tetapi utas ini ditutup sebelum rilis 12.10.

Membuat beberapa googling di sekitar (kebanyakan terinspirasi dari sini ), saya menemukan solusi ini:

  • edit /etc/NetworkManager/NetworkManager.conffile dengan editor tercinta
  • komentar garis dns=dnsmasq
  • mulai ulang manajer jaringan: sudo service network-manager restart

Tetapi dalam konfigurasi dnsmasq Anda ( /etc/dnsmasq.conf), Anda harus yakin untuk mendengarkan permintaan DNS localhost dengan baris tersebut listen-address=127.0.0.1.

Jika Anda mengubah konfigurasi dnsmasq, jangan lupa jalankan sudo /etc/init.d/dnsmasq restart

Saya harap ini akan membantu.


2
Dengan berkomentar dns=dnsmasq, bukankah itu mengalahkan tujuan menginstal DNSmasq. Saya membuat listen-address=127.0.0.1perubahan dan sepertinya berfungsi dengan baik sekarang.

1
Tidak. Anda mencegah NetworkManager memulai dnsmasq dan bukannya memulainya secara mandiri.
MrMas

4

Saya memiliki masalah yang sama.

dnsmasq-basediinstal dan didengarkan pada port 53 yang mencegah dnsmasquntuk memulai.

Dimungkinkan untuk menggunakan dnsmasq-baseinsead of dnsmasquntuk tujuan yang sama: cukup gunakan direktori config lain: yang ditempatkan di Network Managerfolder:

/etc/NetworkManager/dnsmasq.d/

3

Periksa apa yang mendengarkan pada port 53 (domain) dengan:

sudo ss -lp "sport = :domain"

Nonaktifkan semua layanan yang berjalan pada port ini. Itu biasanya systemd-resolved.

Saya akan juga maskjadi itu tidak otomatis mulai di reboot.

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

Untuk membatalkan apa yang Anda lakukan:

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

Juga sudo update-rc.d systemd-resolved disablemungkin menghentikannya mulai otomatis saat boot tetapi saya belum mengujinya. Gunakan defaultsalih-alih disableuntuk membatalkan perintah.


Atau Anda dapat mengubah port apa yang didengarkan dnsmasq, dengan mengedit file konfigurasi:

sudo nano /etc/dnsmasq.conf

Tekan Ctrl+ Wdan ketik listen-address=dan tekan enter.

Batalkan komentar pada baris dan tambahkan 127.0.0.1 dengan port yang berbeda dari 53 seperti:

listen-address=127.0.0.1#5300

0

EDIT: beberapa googling, dan saya menemukan solusinya . Tampaknya manajer jaringan bergantung pada paket yang disebut "dnsmasq-base" yang menyediakan beberapa fungsi dnsmasq. Entri Dnsmasq di Wiki Ubuntu menyatakan itu

"Perhatikan bahwa paket" dnsmasq "mengganggu Network Manager yang dapat menggunakan" dnsmasq-base "untuk menyediakan layanan DHCP saat berbagi koneksi internet. Oleh karena itu, jika Anda menggunakan manajer jaringan (baik dalam pengaturan sederhana saja), kemudian instal dnsmasq -bas, tetapi bukan dnsmasq. Jika Anda memiliki pengaturan yang lebih rumit, hapus instalan manajer jaringan, gunakan dnsmasq, atau perangkat lunak sejenis (bind9, dhcpd, dll), dan konfigurasikan hal-hal dengan tangan. "

Dengan kata lain: Anda ingin menggunakan dnsmasq? Maka Anda lebih baik tahu apa yang Anda lakukan. Solusi yang disebutkan sebelumnya menyarankan untuk mengganti dnsmasq-base dengan dnsmasq dengan cara berikut (perintah pertama juga akan menghapus network-manager):

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

Dan di sini ada beberapa komentar umum tentang menemukan apa yang menghalangi port Anda: Anda dapat menemukan apa yang sedang mendengarkan port mana dengan menggunakan lsof:

lsof -Pn +M -i4

akan mencantumkan port IPv4 karena -i4, sementara

lsof -Pn +M -i6

akan mencantumkan port IPv6. Atau ketik saja

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

Ini seharusnya (semoga) memberi tahu Anda apa yang menggunakan port 53. -PnSakelar baris perintah mencegah konversi nomor port / IP host menjadi nama.

Atau, jalankan

netstat -utlnp

3
Jangan hapus dnsmasq-base; paket dnsmasq tergantung padanya!
jdthood

3
Hati-hati ketika melakukan ini, setelah menjalankan sudo apt-get remove dnsmasq-basesaya dibiarkan tanpa koneksi jaringan sehingga saya tidak bisa melakukan langkah selanjutnya! Solusinya ternyata berjalan dhclient untuk mendapatkan alamat IP baru.
Glenjamin

Digigit oleh ini .. saya harus mengaktifkan kembali systemd-
resol
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.