dnsmasq: DHCP 서버 소켓을 바인딩할 수 없습니다: 주소가 이미 사용 중입니다.

dnsmasq: DHCP 서버 소켓을 바인딩할 수 없습니다: 주소가 이미 사용 중입니다.

PXE 서버로 설정된 상자가 있습니다. DHCP 임대를 제공하는 인터페이스는 eno3입니다. dnsmasq가 설치되어 있고 tftp 서비스를 제공합니다** 바인드가 설치되지 않았습니다 - Ubunutu 18.04 **

Error: dnsmasq: failed to bind DHCP server socket: Address already in use

그러나 netstat는 dnsmasq가 포트 67을 제어한다는 것을 보여줍니다. (DHCP)

누군가 이 오류가 발생하는 이유를 말해 줄 수 있습니까?

netplan yaml, ifconfig, netstat -aunp 및 dnsmasq 실행 오류는 다음과 같습니다.

root@pxebooter:~# dnsmasq
dnsmasq: failed to bind DHCP server socket: Address already in use

root@pxebooter:~# more /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
      version: 2
#     renderer: networkd
      ethernets:
        eno1:
            addresses: [10.1.9.199/24]
            gateway4: 10.1.9.254
            nameservers:
                    addresses: [205.171.3.65,205.171.2.65]
            dhcp4: false
        eno2:
            addresses: [10.1.100.11/24]
            gateway4: 10.1.100.100
            dhcp4: false
            optional: false

        eno3:
            addresses: [10.1.200.1/24]
            gateway4: 10.1.200.1
            dhcp4: false
            optional: false

root@pxebooter:~# ifconfig
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.9.199  netmask 255.255.255.0  broadcast 10.1.9.255
        inet6 fe80::1618:77ff:fe60:c571  prefixlen 64  scopeid 0x20<link>
        ether 14:18:77:60:c5:71  txqueuelen 1000  (Ethernet)
        RX packets 7695  bytes 1124240 (1.1 MB)
        RX errors 0  dropped 742  overruns 0  frame 0
        TX packets 2133  bytes 228533 (228.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 94

eno2: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 14:18:77:60:c5:72  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 95

eno3: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 14:18:77:60:c5:73  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 97

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 130  bytes 10266 (10.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 130  bytes 10266 (10.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@pxebooter:~# grep -v '^#' /etc/dnsmasq.conf
port=0
interface=eno3
dhcp-range=100.1.200.50,10.1.200.150,12h
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/home/pxe
tftp-no-fail
dhcp-lease-max=99
dhcp-leasefile=/home/pxe/leases
dhcp-authoritative
dhcp-script=/bin/echo

root@pxebooter:~# netstat -aunp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
udp    15360      0 127.0.0.53:53           0.0.0.0:*                           1356/systemd-resolv
udp    33600      0 0.0.0.0:67              0.0.0.0:*                           1877/dnsmasq
udp        0      0 0.0.0.0:69              0.0.0.0:*                           1877/dnsmasq
udp6       0      0 :::69                   :::*                                1877/dnsmasq

root@pxebooter:~# tftp localhost
tftp> get test.txt
Received 17 bytes in 0.0 seconds
tftp> quit

root@pxebooter:~# dnsmasq
dnsmasq: failed to bind DHCP server socket: Address already in use
root@pxebooter:~# dnsmasq -h

답변1

그것 참 부끄럽 네.

eno3가 네트워크 주소에 바인딩할 수 없는 이유는 내 네트워크 주소가 잘못되었기 때문입니다. 먼저 시스템 로그를 살펴봐야 합니다.

Aug 14 10:47:52 pxebooter systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
Aug 14 10:49:02 pxebooter dnsmasq-dhcp[2769]: DHCP range 10.1.200.150 -- 100.1.200.50 is not consistent with netmask 255.255.255.0
Aug 14 10:49:02 pxebooter dnsmasq-dhcp[2769]: no address range available for DHCP request via eno3

분명히 10.xxx 및 100.xxx는 /24 서브넷 마스크 범위 내에 있지 않습니다.

나는 여분의 0을 알아채지 못해서 얼마나 많은 시간을 낭비했는지 인정하고 싶지 않습니다.

모두의 도움에 감사드립니다.

답변2

dnsmasq이(가) 이미 실행 중이고 포트 67에서 수신 대기 중이므로 해당 메시지가 표시됩니다. 서비스 를 중지하면 dnsmasq수동으로 실행할 수 있습니다.

답변3

dnsmasq.conf 파일을 루트 폴더나 dnsmasq.d 폴더로 이동하기만 하면 됩니다. 두 폴더를 모두 사용해 볼 수 있습니다. 제 경우에는 파일을 dnsmasq.d 폴더로 이동했습니다. 건배:)

관련 정보