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 폴더로 이동했습니다. 건배:)