Servidor DHCP com várias interfaces de rede e sub-redes diferentes

5

Estou tentando configurar um servidor dhcp (isc dhcpd no debian 8 (vm dentro de um ambiente esxi)) com 4 interfaces de rede, eth0-3 . O servidor dhcp deve servir uma sub-rede diferente nas interfaces eth1 , eth2 , eth3 . Cada sub-rede tem seu próprio vSwitch (vSphere) e o servidor dhcp está conectado a cada vSwitch.

A configuração da interface de rede é assim:

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

auto eth1
iface eth1 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    network 10.0.0.0
    broadcast 10.0.0.255

auto eth2
iface eth2 inet static
    address 172.16.0.1
    netmask 255.255.255.0
    network 172.16.0.0
    broadcast 172.16.0.255

auto eth3
iface eth3 inet static
    address 10.0.1.1
    netmask 255.255.255.0
    network 10.0.1.0
    broadcast 10.0.1.255

A configuração atual do dhcpd é assim:

# dhcpd.conf

default-lease-time 600;
max-lease-time 7200;

subnet 172.16.0.0 netmask 255.255.255.0 {
    range 172.16.0.2 172.16.0.100;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 172.16.0.1;
    option routers 172.16.0.1;
    option broadcast-address 172.16.0.255;
}

subnet 10.0.0.0 netmask 255.255.255.0 {
    range 10.0.0.2 10.0.0.100;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 10.0.0.1;
    option routers 10.0.0.1;
    option broadcast-address 10.0.0.255;
}

subnet 10.0.1.0 netmask 255.255.255.0 {
    range 10.0.1.2 10.0.1.100;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 10.0.1.1;
    option routers 10.0.1.1;
    option broadcast-address 10.0.1.255;
}

E, finalmente, o script de inicialização do dhcpd é assim:

# /etc/default/isc-dhcp-server

DHCPD_CONF=/etc/dhcp/dhcpd.conf
DHCPD_PID=/var/run/dhcpd.pid
INTERFACES="eth1 eth2 eth3"

Até aí tudo bem. No entanto, o que acontece no momento é que os clientes só obtêm tráfego dhcp através da interface eth1. As outras duas interfaces de rede são ignoradas. Mesmo quando eu removo eth1 do script de inicialização isc-dhcp-server, ele ainda é usado e serve endereços IP:

isc-dhcp-server[1467]: Starting ISC DHCP server: dhcpd.
dhcpd: DHCPDISCOVER from 00:0a:26:37:6f:12 via eth1
dhcpd: DHCPOFFER on 10.0.0.2 to 00:0a:26:37:6f:12 (client0) via eth1
dhcpd: DHCPREQUEST for 10.0.0.2 (10.0.0.1) from 00:0a:26:37:6f:12 (client0) via eth1
dhcpd: DHCPACK on 10.0.0.2 to 00:0a:26:37:6f:12 (client0) via eth1

Como posso ter certeza de que uma determinada rede / sub-rede só é exibida usando uma interface de rede específica? Como o servidor dhcp sabe qual cliente pertence a qual sub-rede? Eu sei que eu posso especificar hosts para uma sub-rede usando a notação de hosts (endereço de hardware, hostname, etc.). No entanto, para mim isso anula o propósito do dhcp, porque eu quero ser capaz de atribuir endereços ip dinamicamente sem ter que tocar na configuração dhcp sempre que eu adicionar um novo cliente a uma sub-rede.

    
por DucatiNerd 18.02.2016 / 11:47

1 resposta

1

Então aqui vamos nós com uma pequena explicação sobre o que acontece. POR FAVOR, note que eu aconselho vivamente a executar as configurações dentro de um ambiente de teste para se certificar de que tudo funciona como você quer!

Edit: Por favor, note também que seus switches precisam ser configurados corretamente. Estamos usando comutadores CISCO. Para gerar uma chave OMAPI, você pode seguir guia1 ou guide2 .

Como fazer isc-dhcp-server ouvir em várias sub-redes. Este mini-guia lhe dará uma idéia básica de configuração e algum material adicional para ler para entender completamente o que está acontecendo.

dhcpd.conf:

omapi-port 7911;
omapi-key omapi_key;

key omapi_key {
     algorithm hmac-md5;
     secret your-secret-key;
}

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
# option domain-name-servers x.x.x.x,y.y.y.y;
option netbios-node-type 2;

default-lease-time 7200;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# Failover Configuration

failover peer "failover-partner" {
        primary;
        # this servers ip address
        address A.A.A.A;
        port 519;
        # dhcp failover ip address
        peer address B.B.B.B;
        peer port 520;
        max-response-delay 60;
        max-unacked-updates 10;
        mclt 3600;
        split 128;
        load balance max seconds 3;
}

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

# here we include specific configuration files for our different subnets.
# I'll provide an example for a configuration file, all other subnet configuration files
# are (in my scenario) written the same way.

include "/etc/dhcp/X.Y.1.Z.conf";
include "/etc/dhcp/X.Y.2.Z.conf";
include "/etc/dhcp/X.Y.3.Z.conf";

X.Y.1.Z.conf:

#____________________________________
# subnet information  X.Y.1.0/24
#____________________________________
subnet X.Y.1.0 netmask 255.255.255.0 {
        deny client-updates;
        deny unknown-clients;
        # gateway of this subnet  
        option routers X.Y.1.254;
        # DNS server(s)
        option domain-name-servers 123.123.123.1, 123.123.123.2;
        # search domain(s) for this subnet. Needs the "" to work!
        option domain-search "domain1", "domain2";
        # name of domain of this subnet (if exists, otherwise comment out)
        option domain-name "mydomain";
        # ntp server if you are running one
        option ntp-servers X.Y.Z.254;
        default-lease-time 86400;
        max-lease-time 86400;

        group {
            use-host-decl-names on;

            # Infodisplay
            host dns-name-1 {
            # mac address of client
                hardware ethernet 00:00:00:00:00:00;
            # ip address the above mac address will receive
                fixed-address 123.123.123.1;
            }
       }

Outros arquivos de configuração para sub-redes são criados igualmente. Certifique-se de executar uma VM DHCP dentro do ESXi para disponibilizar a VM para todas as suas redes / VLANs. Em seguida, o isc-dhcp-server precisa atender em todas as redes para que ele possa lidar com diferentes sub-redes, tudo em uma única instância do isc-dhcp-server. Se você quiser omitir o tempo de inatividade ou uma rede que não funciona, é possível executar uma segunda VM com isc-dhcp-server no modo escravo assim:

slave dhcpd.conf:

omapi-port 7911;
omapi-key omapi_key;

key omapi_key {
     algorithm hmac-md5;
     secret your-secret-key;
}

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
# option domain-name-servers x.x.x.x,y.y.y.y;
option netbios-node-type 2;

default-lease-time 7200;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# Failover Configuration

failover peer "failover-partner" {
        primary;
        # this servers ip address
        address B.B.B.B;
        port 519;
        # dhcp master ip address
        peer address A.A.A.A;
        peer port 520;
        max-response-delay 60;
        max-unacked-updates 10;
        mclt 3600;
        split 128;
        load balance max seconds 3;
}

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

# here we include specific configuration files for our different subnets.
# I'll provide an example for a configuration file, all other subnet configuration files
# are (in my scenario) written the same way.

include "/etc/dhcp/X.Y.1.Z.conf";
include "/etc/dhcp/X.Y.2.Z.conf";
include "/etc/dhcp/X.Y.3.Z.conf";

Certifique-se de que as chaves secretas sejam as mesmas em ambas as máquinas, caso contrário, cliente e servidor não são capazes de se comunicar ou fazer switch de failover se o servidor falhar e se espera que o escravo assuma a funcionalidade dhcp.


Se você tem as opções de hardware / configuração, por favor, configure tudo isso em um ambiente experimental.

POR FAVOR, NÃO EXECUTE INSTANTANEAMENTE NESTE EM UM AMBIENTE DE PRODUÇÃO .

Você pode parar de fazer seus clientes de rede funcionarem em segundos e é isso que seu chefe não vai gostar.

    
por 07.03.2016 / 09:47