Назад | Перейти на главную страницу

Сервер Linux dhcpd с несколькими областями действия для назначения IP на основе источника запроса

Я настроил сервер 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 линия в каждой подсети. В этой строке должен быть указан шлюз по умолчанию для каждой сети.