複数のサブネット用の Linux DHCP

複数のサブネット用の Linux DHCP
vlan10---->firewall----->linux dhcp server
vlan20---------↑

2 つの VLAN (vlan10 と vlan20) があり、Linux DHCP サーバーを使用して IP アドレスの指定を集中管理したいと考えています。

Fortigate ファイアウォールでは、クライアントが DHCP IP を取得するために DHCP リレーを使用します。

Linux DHCP サーバーでは、[host] セクションを使用して、クライアントが静的 IP を取得することを制限し、既知のホストが動的 IP を取得できるようにします。

########## config start #########

subnet 192.168.10.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.10.255;
option domain-name-servers 192.168.8.248,192.168.8.246;
option routers 192.168.10.1;
allow unknown-clients;
range 192.168.10.11 192.168.10.210;
}

subnet 192.168.20.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.20.255;
option domain-name-servers 192.168.8.248,192.168.8.246;
option routers 192.168.20.1;
deny unknown-clients;
range 192.168.20.11 192.168.20.210;
}

host host1  {
       hardware ethernet 11:11:11:11:11:11;
       fixed-address 192.168.10.20;
}

host host2  {
       hardware ethernet 22:22:22:22:22:22;
       fixed-address 192.168.10.21;
}

host host3  {
       hardware ethernet 33:33:33:33:33:33;
       fixed-address 192.168.20.20;
}

host host4 {
       hardware ethernet 44:44:44:44:44:44;
}

########## config end #########

この構成では、すべてのクライアントが vlan10 または vlan20 から IP を取得できますが、host4 は vlan20 でのみ動的 IP を取得できるようにしたいと考えています。

ホスト4がvlan10に接続すると、ホスト4はdhcpサーバーからIPアドレスを取得できません。

設定を変更するにはどうすればいいですか?

答え1

現時点ではこれをテストすることはできませんが構文を少し調整する必要があるかもしれませんが、「グループ」定義を使用して、vlan10 および vlan20 のグループ内のすべてのクライアントをリストすることはできますが、vlan10 ファイルでは、host4 に「ブートを拒否」するように指示します。これでそれが実行されるはずです。

現時点では自分でテストすることはできませんが、試してみる価値はあるでしょうか?

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s1-dhcp-configuring-server.html#group dhcpd は、以下のディレクトリに格納されています。起動を拒否する

また、「includes」ディレクティブが機能するかどうかを確認したい場合は、次のようにします。

dhcp.conf:

option domain-name-servers 192.168.8.248,192.168.8.246;
include "/etc/dhcp/vlan10.txt"
include "/etc/dhcp/vlan20.txt"

vlan10.txt

group {
subnet 192.168.10.0 netmask 255.255.255.0 { 
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.10.255;
option routers 192.168.10.1;
allow unknown-clients;
range 192.168.10.11 192.168.10.210;
include "/etc/dhcp/vlan10.hosts.txt"
include "/etc/dhcp/vlan10.deny.hosts.txt"
 }
}

vlan20.txt

group {
subnet 192.168.20.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.20.255;
option routers 192.168.20.1;
deny unknown-clients;
range 192.168.20.11 192.168.20.210;
include "/etc/dhcp/vlan10.hosts.txt"
include "/etc/dhcp/vlan20.hosts.txt"
 }
}

vlan10.hosts.txt

host host1 { hardware ethernet 11:11:11:11:11:11; fixed-address 192.168.10.20; }

host host2 { hardware ethernet 22:22:22:22:22:22; fixed-address 192.168.10.21; }

host host3 { hardware ethernet 33:33:33:33:33:33; fixed-address 192.168.20.20; }

vlan10.deny.hosts.txt

host host4 { hardware ethernet 44:44:44:44:44:44; deny booting; }

vlan20.hosts.txt

host host4 { hardware ethernet 44:44:44:44:44:44; }

答え2

おそらく、host4に一致するクラスを作成し、サブネット構成に「'yourClass'のメンバーを拒否する」という行を追加すると役立つでしょう。

例 :

class "raspberry"
{
    # match mac starting with b8:27:eb
    match if substring(hardware, 1, 3) = b8:27:eb;
}

subnet 192.168.10.0 netmask 255.255.254.0 {
    option routers 192.168.10.254;
    pool {
        range 192.168.10.11 192.168.10.210;
        deny members of "raspberry";
    }
}

関連情報