그래서 저는 KVM 가상 머신용 개발 서버를 실행하고 있습니다. 다음 구성으로 호스트 노드에서 로컬로 실행되는 DHCP 서버가 있습니다.
/etc/dhcp/dhcpd.conf
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;
subnet xxx.xxx.x.0 netmask 255.255.255.0 {
range xxx.xxx.x.2 xxx.xxx.x.127;
option routers xxx.xxx.x.1;
option broadcast-address xxx.xxx.x.255;
option domain-name-servers 8.8.8.8;
option netbios-name-servers 8.8.8.8;
default-lease-time 86400;
max-lease-time 86400;
option rfc3442-classless-static-routes 24, xxx, xxx, x, 0, 0, 0, 0, 0, 0, xxx, xxx, x, 1;
option ms-classless-static-routes 24, xxx, xxx, x, 0, 0, 0, 0, 0, 0, xxx, xxx, x, 1;
host 102 {hardware ethernet 4A:19:BD:DF:B0:07;fixed-address xxx.xxx.x.5;}
}
/etc/default/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="vmbr0"
참고로 Debian 7 proxmox 서버입니다.
문제는 문제 없이 DHCP를 통해 서버에 IP가 할당된다는 것입니다. xxx.xxx.x.5를 가져오지만 -n 경로를 통해 볼 때 게이트웨이는 0.0.0.0으로 설정되므로 네트워크에 연결할 수 없습니다.
VM 네트워크 구성 파일의 내용:
DEVICE=eth01
BOOTPROTO=dhcp
ONBOOT=yes
또한 DHCP에서 정보를 가져올 때 잘못된 인수 오류가 발생하며 관련이 있을 수 있습니다.
클라이언트의 오류 로그:
답변1
제한된 정보로 원격으로 문제를 해결하는 것은 어렵습니다. 하지만 시도해 보고 싶습니다.
먼저, 추측입니다. 일반적으로 DEVICE 이름은 eth0
또는 eth1
가 아닌 입니다 eth01
. 이는 "잘못된 인수 오류"를 설명할 수 있습니다. VM에서 ifconfig -a
또는 ip link
VM에서 올바른 NIC를 다루고 있는지 확인하십시오 .
또 다른 용의자는 정적 경로입니다. 배열에는 14개가 아닌 13개의 항목이 있어야 합니다. 형식은 입니다 <netmask>, <network-byte1>, <network-byte2>, <network-byte3>, <router-byte1>, <router-byte2>, <router-byte3>...
. 따라서 다음과 같아야 합니다 24,192,168,1, 192,168,1,1, 0, 192,168,1,1
. 구경하다여기. 잘못된 정적 경로가 기본 게이트웨이를 덮어쓰는 것 같습니다.
그것이 문제가 아니라면 디버깅을 위한 프로세스가 필요합니다. DHCP 구성에서 vmbr0
Linux 브리지가 있다고 가정 하고 거기에서 VM이 생성됩니다. 호스트/하이퍼바이저에서 virt net-list
및 확인을 통해 VM 네트워크가 올바르게 생성되었는지 확인해야 합니다 . virt edit <vm>
을 사용할 수도 있습니다 virt-manager
. VM에 에서 브리지되는 NIC가 하나만 있는지 확인하세요 vmbr0
.
여전히 문제가 해결되지 않은 경우 VM으로 이동하여 DHCP 클라이언트를 디버그하세요. 먼저 , 또는 을 사용 killall dhclient
하여 트래픽을 실행 dhclient eth0
하고 모니터링합니다 . 게이트웨이 옵션을 찾으세요. 도중에 다른 DHCP 서버가 없는지 확인하세요. (libvirt의 기본 NAT일 수도 있고 브리지가 있으므로 외부의 다른 DHCP 서버일 수도 있습니다.) DHCP 서버가 있는 호스트에서 실행할 수도 있습니다 .dhcpdump -i eth0
tcpdump udp and port 67 or 68
dhcpdump/tcpdump
이게 도움이 되길 바란다.