LINUX.ORG.RU
ФорумAdmin

isc-dhcp-server не выдаёт фиксированные ip

 ,


0

1

Добрый день.

Пытаюсь настроить по инструкции https://www.opennet.ru/docs/RUS/dhcp/ DHCP сервер на debian и не получается выдать фиксированные ip с привязкой к маку

/etc/dhcp/dhcpd.conf

default-lease-time 86400;
max-lease-time 86400;

ddns-update-style none;

authoritative;

log-facility local7;

subnet 172.16.61.0 netmask 255.255.255.0 {
   range 172.16.61.2 172.16.61.253;
   option broadcast-address 172.16.61.255;
   option routers 172.16.61.1;
   option domain-name-servers 172.16.61.1;
   }

host lol1 { hardware ethernet fc:aa:14:18:dc:53; fixed-address 10.3.61.2; }
host lol2 { hardware ethernet 00:19:db:ed:db:b3; fixed-address 10.3.61.3; }

/etc/default/isc-dhcp-server

INTERFACESv4="eth0.100" 

писать INTERFACESv4=«eth0.100 eth0.100:1» не помогает

# так добавляю vlan, на который добавляю две подсети vconfig add eth0 100 ifconfig eth0.100 172.16.61.1 netmask 255.255.255.0 up ifconfig eth0.100:1 10.3.61.1 netmask 255.255.255.0 up

в итоге не работает выдача фиксированных адресов компьютеру выдаётся 172.16.61.2

если изменить конфиг так

/etc/dhcp/dhcpd.conf

default-lease-time 86400;
max-lease-time 86400;

ddns-update-style none;

authoritative;

log-facility local7;

subnet 10.3.61.0 netmask 255.255.255.0 {
   range 10.3.61.2 10.3.61.254;
   option broadcast-address 10.3.61.255;
   option routers 10.3.61.1;
   option domain-name-servers 10.3.61.1, 193.200.22.10;

   host lol1 { hardware ethernet fc:aa:14:18:dc:53; fixed-address 10.3.61.2; }
   host lol2 { hardware ethernet 00:19:db:ed:db:b3; fixed-address 10.3.61.3; }
   }

subnet 172.16.61.0 netmask 255.255.255.0 {
   range 172.16.61.2 172.16.61.253;
   option broadcast-address 172.16.61.255;
   option routers 172.16.61.1;
   option domain-name-servers 172.16.61.1;
   }

то компьютер получает свой 10.3.61.2, но я так понимаю так раздавать фиксированные адреса неправильно и где-то писали что при таком варианте в подсеть 10.3.61.0/24 может кто-то залезть чужой

и такой вариант еще не подходит так как не для всех адресов есть возможность на раздающем ip компьютере добавлять подсеть так как без

записи eth0.100:1 в файле /etc/default/isc-dhcp-server или без ifconfig eth0.100:1 10.3.61.1 netmask 255.255.255.0 up

то выдача фиксированного адреса не работает даже при таком варианте


Для выдачи адреса из какой-то сети у тебя в конфигурации DHCP сервера должен быть прописан пул адресов из этой сети.

Без объявления пула ‘range 10.3.61.2 10.3.61.254;’ выдавать адреса 10.3.61.2 и 10.3.61.3 не получится.

Для настройки параметров сети по DHCP выполняются следующие операции:

  • dhcp клиент отсылает широковещательный запрос на поиск DHCP сервера (dhcp discover) на адрес 255.255.255.255 и пор 67 по протоколу UDP, в котором содержится только MAC адрес сетевой карты;
  • DHCP серверы в сети получают запрос и отсылают клиенту DHCP предложение (dhcp offer) с параметрами сети;
  • клиент выбирает DHCP предложение и отсылает запрос на выбранному DHCP серверу (dhcp request) на выставление параметров;
  • DHCP сервер высылает подтверждене (dhcp ack) выдачи.

Как ты понимаешь т.к. в начальном пакете содержится только MAC адрес клиента, то DHCP сервер должен как-то понять из какого пула адресов ему выдать параметры.

Определяет он это по IP адресу интерфейса через который пришёл запрос. Если у тебя на интефейсе несколько IP адресов, тем более в одном VLAN, то определяется это по таблице маршрутизации и берётся первый IP адрес.

Отсюда вывод: ты не сможешь повесив несколько IP адресов в одном VLAN на интерфейс выдать клиенту адрес из сети 10.3.61.2.

Тебе нужно поднимать одельные VLAN для клиентов, поднимать тегированные интерфейсы на сервере и описывать кониигурацию пула Ip адресов для каждой сети которая должна настраиваться по DHCP.

Если твоё оборудование (маршрутизатор) поддерживает DHCP-relay, то ты можешь иметь DHCP сервер в одном сегменте сети (vlan), объявить на нём нужные тебе пулы и далее пересылать на него запросы из других сетей.

Но тебе нужна железка 3 уровня с маршрутизацией.

Если её нет, то нужен коммутатор с поддержкой VLAN.

Обявляешь VLAN`ы на железке, разносишь клиентов по VLAN, на сервере объявляешь этиже VLAN и нужные тебе пулы.

Указываешь DHCP серверу слушать запросы на интерфейсах VLAN.

anonymous
()

eth.100:1 и eth.100 - это один интерфейс eth.100, DHCP сервер будет обрабатывать запросы в пул определяя его по IP адресу интерфейса eth.100.

Аналогично с eth0 и eth0:1.

anonymous
()

Если в одной физической сети несколько ip-сетей, то эти сети должны быть описаны в shared-network. Смотри man dhcpd.conf

Адреса выдаваемые через fixed-address не должны быть в range.

Если сеть на управляемых коммутаторах, то лучше перейти на использование vlan.

vel ★★★★★
()
Ответ на: комментарий от Khnazile

В оригинальном isc-dhcpd host вообще никак не привязаны ни к подсетям, ни к range. Хуже того, если их туда вносишь, то он предупреждвает при каждом старте, что это бесполезно. Соответственно нельзя выдать разные адреса одному МАС-у в разных подсетях.

host можно нужно описывать за пределами shared-network/subnet/range

isc-dhcpd так же ругается в логах, если fixed-address из какого-то range.

Если в subnet нет range и «deny unknown-clients», то адреса выдаются только известным клиентам т.е. хостам с fixed-address или внесенным через omapi-интерфейс

Если нужно чтобы isc-dhcpd ничего не выдавал в какой-нибудь подсети, то там нужно сказать «deny unknown-clients;not authoritative;»

vel ★★★★★
()
Ответ на: комментарий от anonymous

И правда, работает (на 4.4.1)! Интересно, с какой версии оно стало работать.

Я начинал с isc-dhcpd 4.0.x и там оно не хотело работать. Оно выдавало то ли первый, то ли последний адрес по порядку описания хостов вне зависимости от subnet.

Интересно, а оно нормально работает при работе через omapi? У меня freeradius через него работает.

Интересно, а оно нормально работает через dhcp-forward?

vel ★★★★★
()
Ответ на: комментарий от vel

Но как я понял, выдавать два адреса в разных подсетях одному хосту и не требуется, нужно только выдать определенным компам фиксированный адреса в другой подсети

Khnazile ★★★★★
()
Ответ на: комментарий от Khnazile

Если есть несколько ip-сетей внутри одной физической сети, то для корректной работы dhcpd они должны быть описаны внутри одной shared-network. Тогда он будет просматривать «host» входящие во все «subnet» одной «shared-network».

Внути одной subnet можно делать несколько «pool» со своими range.

Для каждого «pool» выдачу адресов можно ограничить через «allow unkown-clients»/«deny unknown-clients» и «allow members of»/«deny members of».

vel ★★★★★
()
Ответ на: комментарий от vel

Так насколько я понял документацию, если ни один shared-network не прописан в явном виде, dhcpd считает, что все объявленые subnet в одном shared-network.

Khnazile ★★★★★
()
Ответ на: комментарий от Khnazile

Наоборот. Каждая subnet - это отдельный shared-network c одним subnet.

vel ★★★★★
()

Если ты используешь isc dhcpd на VLAN интерфейсах, то убедись, что на них включен reorder_hdr ip -d li show eth0.100 | grep REORDER_HDR

vel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.