web-dev-qa-db-ja.com

複数のネットワークインターフェイスと異なるサブネットを持つDHCPサーバー

4つのネットワークインターフェースeth0-を使用して、dhcpサーバー(debian 8(esxi環境内のvm)のisc dhcpd)をセットアップしようとしています。 dhcpサーバーは、インターフェースeth1eth2eth上の異なるサブネットにサービスを提供する必要があります。各サブネットには独自のvSwitch(vSphere)があり、dhcpサーバーが各vSwitchに接続されています。

ネットワークインターフェイスのセットアップは次のようになります。

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

現在のdhcpd構成は次のようになります。

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

最後に、dhcpd initスクリプトは次のようになります。

# /etc/default/isc-dhcp-server

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

ここまでは順調ですね。ただし、現時点では、クライアントはeth1インターフェイス経由でのみdhcpトラフィックを取得しています。他の2つのネットワークインターフェイスは無視されます。 isc-dhcp-server initスクリプトからeth1を削除しても、それは引き続き使用され、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

特定のネットワーク/サブネットが特定のネットワークインターフェイスを使用してのみ提供されることをどのように確認できますか? DHCPクライアントはどのクライアントがどのサブネットに属しているかをどのようにして知るのですか?ホスト表記(ハードウェアアドレス、ホスト名など)を使用して、サブネットのホストを指定できることを知っています。ただし、サブネットに新しいクライアントを追加するたびにdhcp構成を変更することなく、動的にIPアドレスを割り当てることができるようにしたいので、dhcpの目的に反しています。

5
DucatiNerd

だからここでは何が起こるかを少し説明します。テスト環境内で構成を実行して、すべてが期待どおりに機能することを確認することを強くお勧めします。

編集:スイッチを適切に構成する必要があることにも注意してください。シスコのスイッチを使用しています。 OMAPIキーを生成するには、 guide1 または guide2 に従います。

isc-dhcp-serverに複数のサブネットをリッスンさせる方法。このミニガイドは、基本的な構成のアイデアと、何が起こっているのかを完全に理解するために読むべきいくつかの追加資料を提供します。

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

サブネットの他の構成ファイルも同様に構築されます。 DHCPを実行している場合VM ESXi内でVMをすべてのネットワーク/ VLANで使用できるようにします。 isc-dhcp-serverは、isc-dhcp-serverの1つの実行中のインスタンス内ですべて異なるサブネットを処理できるように、予想されるすべてのネットワークをリッスンする必要があります。ダウンタイムまたは非稼働ネットワークを省略したい場合は、もちろん、次のようにスレーブモードで2番目のVM withisc-dhcp-serverを実行できます:

スレーブ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";

秘密鍵が両方のマシンで同じであることを確認してください。それ以外の場合、clientserverサーバーに障害が発生し、スレーブがdhcp機能を引き継ぐことが期待される場合、通信できず、フェイルオーバースイッチを実行することもできません。


ハードウェア/セットアップオプションがある場合は、これらすべてを実験環境でセットアップしてください。

本番環境でこれを実行しないでください

ネットワーククライアントを数秒以内に機能させるのを止めることができ、それは上司が気に入らないことです。

2
semm0