O servidor DHCP não está respondendo às solicitações do convidado KVM

2

Eu configurei um servidor DHCP no meu servidor Debian (Proxmox) para que eu possa provisionar IPs para meus convidados do KVM no servidor automaticamente. Por algum motivo, o servidor DHCP (isc-dhcp-server) não está respondendo às solicitações de um IP. O servidor DHCP está configurado para escutar uma interface de ponte que eu criei chamada vmbr1 e sei que as solicitações estão chegando ao host do convidado KVM conforme o testei por meio de dhcpdump -i vmbr1 .

Eu obviamente cometi um erro em algum lugar, alguém consegue identificá-lo? Eu incluí meus arquivos de configuração abaixo.

arquivo 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;}
}

arquivo isc-dhcp-server:

# 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"

arquivo de interfaces no host:

# 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

Exemplo de solicitação do convidado KVM para o servidor host por meio do vmbr1 usando 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
---------------------------------------------------------------------------

Saída de 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.

Espero ter incluído informações suficientes para ajudar na resolução. Muito obrigado!

    
por Joel Kennedy 28.05.2014 / 23:11

3 respostas

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;}
}

O endereço IP (95.141.36.124) que você deseja associar a esse endereço MAC está fora do intervalo definido por você (192.168.0.1 a 192.168.0.30)

Se eu definir uma configuração semelhante (endereço fixo fora do intervalo) em casa, as solicitações do endereço MAC associado serão ignoradas.

Tente remover completamente a entrada, o seu host 104 deve então receber um endereço dinamico da faixa 192.168.0.0/27

    
por 01.06.2014 / 13:01
0

Você já tentou desligar o firewall / iptables? A maioria dos problemas de serviço de rede que eu enfrento são devido à configuração incorreta do firewall. Como uma rápida verificação de sanidade, eu tentaria "serviço iptables parar" e ver se as coisas funcionam. Se você puder, inicie-o novamente e tente jogar com algumas regras específicas para configurá-lo corretamente. Se você tiver o firewalld em execução, provavelmente também deverá tentar "service firewalld stop" (ou systemctl stop firewalld.service se tiver o systemd).

    
por 29.05.2014 / 02:20
0

Eu já tentei executar meu servidor DHCP em uma instância do OpenVZ (que é a versão aberta do ProxMox) e nunca consegui fazê-lo funcionar. Acabei transferindo esse serviço para o host do OpenVZ, em vez de um dos convidados. Esta página do projeto OpenVZ pode ser útil para você descobrir o que está acontecendo com seu servidor DHCP.

Estas são as etapas mostradas para configurar sua interface de ponte + VM guest. Confirmo que você tenha suas configurações em uma configuração semelhante:

$ 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

Além disso, você pode querer tentar depurar as interações do seu servidor DHCP executando tcpdump . Estes são alguns encantamentos que podem ser úteis para determinar o que está acontecendo.

Exemplos

$ tcpdump -n -i br0 broadcast

-ou -

$ tcpdump -A -p -n -i br0

-ou -

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

Referências

por 04.06.2014 / 01:04

Tags