Я настроил сервер Linux dhcpd с несколькими областями на одном интерфейсе (eth0). Устройства, которым требуется этот IP-адрес (клиенты DHCP), находятся в двух разных удаленных сетях. Группа по работе с сетями завершила всю настройку, включая промежуточные DHCP-реле, поэтому запросы достигают моего DHCP-сервера в следующем формате:
DHCPDISCOVER from macaddress via 10.238.16.10 (remote_network_1)
DHCPDISCOVER from macaddress via 10.238.25.20 (remote_network_2)
(Я думаю, что упомянутые выше IP-адреса принадлежат удаленным маршрутизаторам, которые пересылают DHCP-запросы на мой сервер.)
Прямо сейчас DHCP-сервер успешно назначает IP-адреса из первой настроенной области (10.238.16.x) клиентам, запрашивающим как от remote_network_1, так и от remote_network_2.
Как я могу настроить его так, чтобы при поступлении запроса от 10.238.16.10 он назначал IP-адрес 10.238.16.X, а когда он поступает с 10.238.25.20, он назначал IP-адрес 10.238.25.X.
Я знаю, что есть другие способы решить эту проблему - например, настроить dhcpd для прослушивания на двух разных интерфейсах и т. Д., Но это не сработает для меня.
Я попробовал "вариант широковещательного адреса", но это не сработало.
Мой dhcpd.conf:
ddns-update-style none;
default-lease-time 6000;
max-lease-time 72000;
authoritative;
log-facility local7;
subnet 10.238.24.0 netmask 255.255.255.248 {
}
shared-network DA {
subnet 10.238.16.0 netmask 255.255.255.0{
range 10.238.16.52 10.238.16.254;
option routers 10.238.24.9;
option broadcast-address 10.238.16.255;
}
subnet 10.238.25.0 netmask 255.255.255.0{
range 10.238.25.52 10.238.25.254;
option routers 10.238.24.9;
option broadcast-address 10.238.25.255;
}
}
Из системного журнала:
Feb 3 13:32:18 linux-server dhcpd: DHCPDISCOVER from b8:5e:7b:1e:c2:89 via 10.238.25.20
Feb 3 13:32:19 linux-server dhcpd: DHCPOFFER on 10.238.16.53 to b8:5e:7b:1e:c2:89 (android-ba98679bfc07f0cb) via 10.238.25.20
Feb 3 13:32:19 linux-server dhcpd: DHCPREQUEST for 10.238.16.53 (10.238.24.20) from b8:5e:7b:1e:c2:89 (android-ba98679bfc07f0cb) via 10.238.25.20
Feb 3 13:32:19 linux-server dhcpd: DHCPACK on 10.238.16.53 to b8:5e:7b:1e:c2:89 (android-ba98679bfc07f0cb) via 10.238.25.20
Feb 3 13:35:40 linux-server dhcpd: DHCPDISCOVER from 40:f3:08:89:3f:13 via 10.238.16.10
Feb 3 13:35:41 linux-server dhcpd: DHCPOFFER on 10.238.16.54 to 40:f3:08:89:3f:13 (android-47aa390064e91817) via 10.238.16.10
Feb 3 13:35:41 linux-server dhcpd: DHCPREQUEST for 10.238.16.54 (10.238.24.20) from 40:f3:08:89:3f:13 (android-47aa390064e91817) via 10.238.16.10
Feb 3 13:35:41 linux-server dhcpd: DHCPACK on 10.238.16.54 to 40:f3:08:89:3f:13 (android-47aa390064e91817) via 10.238.16.10
В конце концов, мы выяснили, что лучший способ сделать это - настроить DHCPD для назначения статического IP-адреса на основе MAC-адреса устройства.
Мы контролируем устройства, которые подключаются к этим сетям, и их ограниченное количество, поэтому это решение работает для нас. Это немного лишняя работа, но также добавляет некоторую безопасность.
Удалено shared-network
часть. Это не общая сеть. Вам просто нужны два прицела. Из man dhcpd.conf
:
Оператор shared-network используется для информирования DHCP-сервера о том, что некоторые IP-подсети фактически используют одну и ту же физическую сеть. Любые подсети в совместно используемой сети должны быть объявлены в операторе совместно используемой сети. Параметры, указанные в операторе shared-network, будут использоваться при загрузке клиентов в этих подсетях, если только параметры, предоставленные на уровне подсети или хоста, не переопределяют их. Если какая-либо подсеть в общей сети имеет адреса, доступные для динамического распределения, эти адреса собираются в общий пул для этой общей сети и назначаются клиентам по мере необходимости. Невозможно определить, в какой подсети общей сети должен загружаться клиент.
Вы также должны исправить option routers
линия в каждой подсети. В этой строке должен быть указан шлюз по умолчанию для каждой сети.