서버의 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