Как настроить dhcpd.conf так, чтобы все клиенты, подключенные к NIC 1, имели IP-адреса 192.168.2.x, а все клиенты, подключенные к NIC 2, получали IP-адреса 192.168.3.x и все с сетевой маской 255.255.248.0.
Мой текущий файл конфигурации dhcpd.conf:
option subnet-mask 255.255.248.0;
subnet 192.168.0.0 netmask 255.255.248.0 {
option routers 192.168.2.10;
option broadcast-address 192.168.2.255;
option subnet-mask 255.255.248.0;
option domain-name-servers 192.168.2.10;
range 192.168.2.30 192.168.2.250;
}
subnet 192.168.0.0 netmask 255.255.248.0 {
option routers 192.168.3.10;
option broadcast-address 192.168.3.255;
option subnet-mask 255.255.248.0;
option domain-name-servers 192.168.3.10;
range 192.168.3.30 192.168.3.250;
}
host host1 {
hardware ethernet xxxxxxxxxxxxxx;
fixed-address 192.168.2.10;
}
host host2 {
hardware ethernet xxxxxxxxxxxxxx;
fixed-address 192.168.3.10;
}
Ваш файл dhcpd.conf настроен правильно, но ваши подсети плохо определены. Вы не можете использовать 21-битную маску сети (255.255.248.0) с вашей схемой нумерации. Если вы используете 24-битную маску (255.255.255.0), она должна работать.
С 21-битной маской:
Address: 192.168.2.0 11000000.10101000.00000 010.00000000
Address: 192.168.3.0 11000000.10101000.00000 011.00000000
Netmask: 255.255.248.0 (/21) 11111111.11111111.11111 000.00000000
^^^
Здесь «.2» и «.3» находятся за пределами сетевой маски и поэтому не включены в определения подсети.
С 24-битной маской:
Address: 192.168.2.0 11000000.10101000.00000010.00000000
Address: 192.168.3.0 11000000.10101000.00000011.00000000
Netmask: 255.255.255.0 (/24) 11111111.11111111.11111111.00000000
^^^
Теперь «.2» и «.3» находятся внутри сетевой маски и, следовательно, являются частью определений подсети.
Есть несколько способов добиться этого. Самый простой, но не обязательно лучший способ - запустить два разных процесса dhcpd, каждый со своим собственным файлом конфигурации и каждый настроен на прослушивание через определенный интерфейс:
dhcpd -cf /etc/dhcpd-network1 eth0
dhcpd -cf /etc/dhcpd-network2 eth1
Хотя это довольно грязно. Правильный способ сделать это - установить в сети реле DHCP. В большинстве случаев это происходит на маршрутизаторе с помощью команды «ip helper». В этой настройке маршрутизатор перехватывает dhcp-запросы и перенаправляет их на сервер, указанный в команде «ip helper». Поскольку DHCP-серверу известна подсеть, из которой маршрутизатор перенаправил запрос, он может выдать аренду из соответствующего пула.
Однако, если это не вариант для вас, боюсь, вы остановились на первом варианте.
Редактировать:
Существует вероятность того, что вы сможете использовать только один демон dhcpd с несколькими пулами. Теоретически dhcpd должен знать, на каком IP-адресе находится каждый интерфейс, и соответственно выдавать аренду. К сожалению, в настоящее время у меня нет простого способа проверить это, так что это может быть совсем не правильно.