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)에서는 라인을 사용하여 localhost DNS 쿼리를 수신해야합니다 listen-address=127.0.0.1.

dnsmasq의 구성을 변경하는 경우 실행을 잊지 마십시오 sudo /etc/init.d/dnsmasq restart

이것이 도움이되기를 바랍니다.


2
주석을 달아도 dns=dnsmasqDNSmasq 설치의 목적을 어기는 것은 아닙니다. 나는 listen-address=127.0.0.1변경했고 지금은 잘 작동하는 것 같습니다.

1
아니요. NetworkManager가 dnsmasq를 시작하지 않고 독립적으로 시작하는 것을 막고 있습니다.
MrMas

4

나는 같은 문제가 있었다.

dnsmasq-basednsmasq시작 하지 못하도록 포트 53에 설치 및 청취되었습니다 .

동일한 목적으로 dnsmasq-baseinsead 를 사용할 수 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=및 히트 입력합니다.

줄을 주석 해제하고 다음과 같이 53이 아닌 다른 포트로 127.0.0.1을 추가하십시오.

listen-address=127.0.0.1#5300

0

편집 : 일부 인터넷 검색, 나는 해결책을 찾았 습니다 . 네트워크 관리자는 dnsmasq 기능 중 일부를 제공하는 "dnsmasq-base"라는 패키지에 의존하는 것 같습니다. 우분투 위키의 Dnsmasq 항목에 따르면

"dnsmasq"패키지는 "dnsmasq-base"를 사용하여 인터넷 연결을 공유 할 때 DHCP 서비스를 제공 할 수있는 Network Manager를 방해합니다. 따라서 네트워크 관리자를 사용하는 경우 (간단한 설정 만 해당) 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

-i4로 인해 IPv4 포트가 나열됩니다.

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네트워크 연결이없는 상태로 남아 있으므로 다음 단계를 수행 할 수 없었습니다! 이 솔루션은 새로운 IP 주소를 얻기 위해 dhclient를 실행하는 것으로 나타났습니다.
Glenjamin

물 렸어 .. 난 systemd-resolve를 다시 활성화해야했다
Emmanel Osimosu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.