web-dev-qa-db-fra.com

Server DHCP avec plusieurs interfaces réseau et différents sous-réseaux

J'essaie de configurer un serveur DHCP (ISC DHCPD sur Debian 8 (VM à l'intérieur d'un environnement ESXI)) avec 4 interfaces réseau, ETH0-. Le serveur DHCP doit servir un sous-réseau différent sur les interfaces ETH1, ETH2, ETH. Chaque sous-réseau a son propre vswitch (vSphere) et le serveur DHCP est connecté à chaque VSWITCH.

La configuration de l'interface réseau ressemble à ceci:

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

La configuration DHCPD actuelle ressemble à ceci:

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

Et enfin, le script DHCPD Init ressemble à ceci:

# /etc/default/isc-dhcp-server

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

Jusqu'ici tout va bien. Cependant, ce qui se passe au moment est que les clients obtiennent uniquement du trafic DHCP via l'interface ETH1. Les deux autres interfaces réseau sont ignorées. Même lorsque je supprimai Eth1 du script ISC-DHCP-Server Init, il est toujours utilisé et sert des adresses 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

Comment puis-je m'assurer qu'un certain réseau/sous-réseau n'est servi qu'avec une interface réseau spécifique? Comment le serveur DHCP sait-il, quel client appartient au sous-réseau? Je sais que je peux spécifier des hôtes pour un sous-réseau à l'aide de la notation des hôtes (adresse matérielle, nom d'hôte, etc.). Cependant, pour moi qui défait le but de DHCP, car je souhaite pouvoir attribuer des adresses IP de manière dynamique sans avoir à toucher la configuration DHCP chaque fois que j'ajoute un nouveau client à un sous-réseau.

5
DucatiNerd

Alors, nous allons avec une petite explication que se passe-t-il. Veuillez noter que je conseillerais vivement à exécuter les configurations dans un environnement de test pour vous assurer que tout fonctionne comme vous le souhaitez!

Edit: Veuillez également noter que vos commutateurs doivent être correctement configurés. Nous utilisons des commutateurs Cisco. Pour générer une clé OMAPI, vous pouvez suivre Guide1 ou Guide2 .

Comment faire ISC-DHCP-Server Écouter sur des sous-réseaux Mulitple. Ce mini-guide vous donnera une idée de configuration de base et un matériau supplémentaire à lire pour bien comprendre ce qui se passe.

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

D'autres fichiers de configuration des sous-réseaux sont construits de manière égale. Assurez-vous que si vous exécutez un DHCP VM à l'intérieur de l'ESXI, pour créer VM disponible pour tous vos réseaux/vlans. Le ISC-DHCP -Server Il est alors nécessaire d'écouter sur tous les réseaux, il est censé gérer des sous-réseaux différents dans une instance d'exécution de ISC-DHCP-Server. Si vous souhaitez omettre les temps d'arrêt ou un réseau non fonctionnel, vous pouvez Course exécutoire une seconde VM avec ISC-DHCP-Server en mode esclave comme ceci:

esclave 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";

Assurez-vous que les touches touches secrètes sont les mêmes sur les deux machines, sinon Client et serveur ne sont pas capables de communiquer ou de Même faire un commutateur de basculement si le serveur échoue et esclave devrait prendre en charge la fonctionnalité DHCP.


[.____] Si vous avez les options matérielles/configurations, veuillez la configurer tout cela dans un environnement expérimental.

N'oubliez pas de l'exécuter instantanément dans un environnement de production .

[.____] Vous pouvez arrêter de faire fonctionner vos clients réseau en quelques secondes et c'est ce que votre patron n'aimera pas.

2
semm0