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

ทำให้ googling รอบ (ส่วนใหญ่เป็นแรงบันดาลใจจากที่นี่ ) ฉันพบวิธีนี้:

  • แก้ไข/etc/NetworkManager/NetworkManager.confไฟล์ด้วยโปรแกรมแก้ไขที่คุณรักที่สุด
  • แสดงความคิดเห็นบรรทัด dns=dnsmasq
  • รีสตาร์ทตัวจัดการเครือข่าย: sudo service network-manager restart

แต่ในการกำหนดค่า dnsmasq คุณ ( /etc/dnsmasq.conf) คุณจะต้องแน่ใจว่าจะฟังคำสั่ง localhost 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เพื่อจุดประสงค์เดียวกัน: เพียงแค่ใช้ไดเร็กทอรี config อื่น: อันที่อยู่ใน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 รอฟังโดยแก้ไขไฟล์ config:

sudo nano /etc/dnsmasq.conf

กดCtrl+ Wและพิมพ์listen-address=แล้วกด Enter

ยกเลิกหมายเหตุบรรทัดและเพิ่ม 127.0.0.1 ด้วยพอร์ตอื่นที่ไม่ใช่ 53 เช่น:

listen-address=127.0.0.1#5300

0

แก้ไข: บาง googling และผมพบว่าวิธีการแก้ปัญหา ดูเหมือนว่าผู้จัดการเครือข่ายขึ้นอยู่กับแพ็คเกจที่เรียกว่า "dnsmasq-base" ซึ่งมีฟังก์ชั่น dnsmasq บางอย่าง รายการ Dnsmasq ใน Ubuntu Wikiระบุว่า

"โปรดทราบว่าแพ็คเกจ" dnsmasq "รบกวน Network Manager ซึ่งสามารถใช้" dnsmasq-base "เพื่อให้บริการ DHCP เมื่อใช้การเชื่อมต่ออินเทอร์เน็ตร่วมกันดังนั้นหากคุณใช้ตัวจัดการเครือข่าย (ปรับในการตั้งค่าอย่างง่ายเท่านั้น) จากนั้นติดตั้ง dnsmasq - ฐาน แต่ไม่ใช่ 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 ใหม่
Glenjamin

ถูกกัดโดยสิ่งนี้ .. ฉันต้องเปิดใช้งาน systemd-
resol
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.