DHCP 서버가 KVM 게스트의 요청에 응답하지 않습니다.

DHCP 서버가 KVM 게스트의 요청에 응답하지 않습니다.

서버의 KVM 게스트에게 IP를 자동으로 제공할 수 있도록 Debian 서버(Proxmox)에 DHCP 서버를 설정했습니다. 어떤 이유로 DHCP 서버(isc-dhcp-server)가 IP 요청에 응답하지 않습니다. DHCP 서버는 내가 만든 vmbr1이라는 브리지 인터페이스를 수신하도록 설정되어 있으며, 테스트를 했기 때문에 KVM 게스트에서 호스트로 요청이 전송된다는 것을 알고 있습니다 dhcpdump -i vmbr1.

분명 어디선가 실수를 한 것 같은데, 누가 알아챌 수 있나요? 아래에 구성 파일을 포함시켰습니다.

dhcp.conf 파일:

ddns-update-style none;
deny declines;
deny bootp;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.224 {
     interface vmbr1;
     option routers 192.168.0.5;
     option broadcast-address 192.168.0.31;
     option ntp-servers 192.168.0.101;
     option domain-name-servers 192.168.0.101;
     option netbios-name-servers 192.168.0.101;
     option netbios-node-type 2;
     default-lease-time 86400;
     max-lease-time 86400;
     #vmbr1ipv4
      host 104 {hardware ethernet 1A:27:59:82:39:8E;fixed-address 95.141.36.124;}
}

isc-dhcp-서버 파일:

# Defaults for isc-dhcp-server initscript
# sourced by /etc/init.d/isc-dhcp-server
# installed at /etc/default/isc-dhcp-server by the maintainer scripts

#
# This is a POSIX shell fragment
#

# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
#DHCPD_CONF=/etc/dhcp/dhcpd.conf

# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
#DHCPD_PID=/var/run/dhcpd.pid

# Additional options to start dhcpd with.
#       Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="vmbr1"

호스트의 인터페이스 파일:

# network interface settings
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto vmbr0
iface vmbr0 inet static
        address  95.141.36.188
        netmask  255.255.255.0
        gateway  95.141.36.1
        broadcast  95.141.36.255
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        network 95.141.36.0
        bridge_maxwait 0

auto vmbr1
iface vmbr1 inet static
        address  192.168.0.5
        netmask  255.255.255.224
        bridge_ports none
        bridge_stp off
        bridge_fd 0

vmbr1을 통해 KVM 게스트에서 호스트 서버로 샘플 요청을 작성하려면 다음 명령을 사용하십시오 dhcpdump -i vmbr1.

  TIME: 2014-05-28 21:40:14.232
    IP: 0.0.0.0 (1a:27:59:82:39:8e) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
    OP: 1 (BOOTPREQUEST)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: 599fa654
  SECS: 0
 FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 1a:27:59:82:39:8e:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  53 (  1) DHCP message type         1 (DHCPDISCOVER)
OPTION:  55 (  8) Parameter Request List      1 (Subnet mask)
                         28 (Broadcast address)
                          2 (Time offset)
                          3 (Routers)
                         15 (Domainname)
                          6 (DNS server)
                         12 (Host name)
                         42 (NTP servers)

OPTION:  60 (  3) Vendor class identifier   d-i
---------------------------------------------------------------------------

출력은 다음에서 비롯됩니다.dhcpd

Internet Systems Consortium DHCP Server 4.2.2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
WARNING: Host declarations are global.  They are not limited to the scope you declared them in.
Wrote 0 deleted host decls to leases file.
Wrote 0 new dynamic host decls to leases file.
Wrote 0 leases to leases file.
Listening on LPF/vmbr1/fa:98:02:e0:1c:28/192.168.0.0/27
Sending on   LPF/vmbr1/fa:98:02:e0:1c:28/192.168.0.0/27
Sending on   Socket/fallback/fallback-net
There's already a DHCP server running.

문제를 해결하는 데 도움이 되는 충분한 정보를 제공하였기를 바랍니다. 매우 감사합니다!

답변1

subnet 192.168.0.0 netmask 255.255.255.224 {
....
      host 104 {hardware ethernet 1A:27:59:82:39:8E;fixed-address 95.141.36.124;}
}

이 MAC 주소와 연결하려는 IP 주소(95.141.36.124)가 정의한 범위(192.168.0.1 ~ 192.168.0.30)를 벗어났습니다.

집에서 비슷한 구성을 설정하면(고정 주소가 범위를 벗어남) 관련 MAC 주소의 요청이 무시됩니다.

항목을 완전히 제거하면 호스트 104가 192.168.0.0/27 범위에서 동적 주소를 얻게 됩니다.

답변2

방화벽/iptables를 꺼보셨나요? 내가 겪는 대부분의 네트워크 서비스 문제는 잘못 구성된 방화벽으로 인해 발생합니다. 빠른 온전성 검사로 "service iptables stop"을 시도하고 작동하는지 확인합니다. 그렇다면 다시 시작하고 몇 가지 특정 규칙을 사용하여 올바르게 구성해 볼 수 있습니다. Firewalld를 실행 중인 경우 "servicefirewalldstop"도 시도해야 합니다(systemd를 사용하는 경우 systemctlstopfirewalld.service를 시도할 수 있음).

답변3

이전에 OpenVZ 인스턴스(ProxMox의 오픈 소스 버전) 내에서 DHCP 서버를 실행해 보았지만 작동하지 않았습니다. 결국 게스트 중 한 명이 아닌 OpenVZ 호스트로 서비스를 이동하게 되었습니다. OpenVZ 프로젝트의 이 페이지는 DHCP 서버에서 무슨 일이 일어나고 있는지 이해하는 데 도움이 될 수 있습니다.

다음은 브리지 인터페이스 + 게스트 VM 설정을 보여주는 단계입니다. 설정이 비슷한 것으로 확인되었습니다.

$ vzctl create 144 --ostemplate centos-4-i386-minimal
$ vzctl start 144
$ vzyum 144 install dhcp
$ vzctl set 144 --netif_add eth0 --save
$ brctl show

$ brctl addif vzbr0 veth144.0
$ ifconfig vzbr0
$ cat /proc/sys/net/ipv4/conf/vzbr0/forwarding 
$ cat /proc/sys/net/ipv4/conf/vzbr0/proxy_arp 
$ echo 1 > /proc/sys/net/ipv4/conf/vzbr0/forwarding 
$ echo 1 > /proc/sys/net/ipv4/conf/vzbr0/proxy_arp

또한 를 실행하여 DHCP 서버 상호 작용을 디버깅해 볼 수도 있습니다 tcpdump. 이 주문은 무슨 일이 일어나고 있는지 식별하는 데 도움이 될 수 있습니다.

$ tcpdump -n -i br0 broadcast

-또는-

$ tcpdump -A -p -n -i br0

-또는-

$ tcpdump -i br0 host <ip of client> -l

인용하다

관련 정보