LINUX.ORG.RU
ФорумAdmin

dhcp и tftp клиенты получают два разных ip

 ,


0

1

Привет.

Проблема: есть ubuntu сервер c isc-dhcpd-4.1-ESV-R4, есть клиенты win7, которые получают по tftp загрузчик по сети (без этого загрузчика винда не загрузится с ошибкой доступа к диску) и после старта os получают ip адрес по dhcp. В итоге на один мак адрес мы получаем 2 занятых ip.

Есть хосты, для которых прописан статический ip адрес, либо на самой машине, либо на dhcp сервере с помощью инструкций host. Из документации извесно, что сервер при запросе DHCPDISCOVER пытается выдать адрес из пула свободных адресов, если в пуле адреса закончились, то он обращается к черному списку (адреса, которые вернулись с статусом Abandoning IP address). Проблема в том, что при загрузке по tftp, клиенты опрашивает dhcp сервер 6 или 7 раз, не суть, а в черном списке больше 20 адресов. В итоге после 6 опросов клиент выводит ошибку, что ip адрес он не получил.

При этом в dhcpd.leases есть записи адресов с статусом binding state free;, но фактически переход в статус свободных происходит если ip адресов в черном списке мало или где-то после 30 - 40 дней.

вопросы:

1) Как можно выдавать адреса исключительно по маку и не через директиву host. Т.е. вместо uid использовать сугубо мак адрес.

2) Как можно удалить адреса из черного списка, чтобы dhcp сервер не считал, что они свободные.

Возможные решения:

1) Изменить маску сети или вообще сеть. Не очень хочется, много где прописана, вылезут косяки.

2) Сделать так, чтобы выдача адресов начиналась не с 2, а с 50. Серверы со статическими ip прописать в диапазон от 2 до 50. Этот вариант не подходит, так как нужно следить за адресами и разработчики могут ставить статические ip сами. Сейчас если и ставят, то тот же, что им dhcp раздал.

Конфиг:

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
option ms-classless-static-routes code 249 = array of unsigned integer 8;
ddns-update-style none;
log-facility local7;
ignore client-updates;

subnet 10.16.2.0 netmask 255.255.254.0
{
  authoritative;
  range 10.16.2.1 10.16.3.250;
  default-lease-time 42300;
  max-lease-time 86400;
  dynamic-bootp-lease-length 60;
  allow duplicates;
  #deny duplicates;
  filename "file.pxe";
  one-lease-per-client true;
  option routers 10.16.3.253;
  option domain-name-servers 10.16.3.10,10.16.3.2;
  option domain-name "vasya.local";
  option broadcast-address 10.16.3.255;
  option rfc3442-classless-static-routes 13, 10, 8, 10, 16, 3, 254, 16, 10, 24, 10, 16, 3, 254;
  option ms-classless-static-routes 13, 10, 8, 10, 16, 3, 254, 16, 10, 24, 10, 16, 3, 254;


host server
{
  hardware ethernet 00:1e:8c:69:d9:95;
  fixed-address 10.16.3.9;
}

host dc-1
{
  hardware ethernet 00:23:54:04:34:5a;
  fixed-address 10.16.3.10;
}
}

которые получают по tftp загрузчик

Которые тянут filename по tftp часто получают IP по BOOTP, а не DHCP. Поэтому без секции host со своим MAC или без range dynamic-bootp адрес не получат.

Как можно выдавать адреса исключительно по маку и не через директиву host

Через дерективу host адреса выдаются исключительно по hardware ethernet, если не задан dhcp-client-identifier.

удалить адреса из черного списка, чтобы dhcp сервер не считал, что они свободные

Лучше сделать так, чтобы статические адреса не попадали ни в какой range.

Этот вариант не подходит

Вообще-то нормальная система перед использованием IP проверяет ARP, и NACK занятый. Для ненормальных можно включить опцию ping-check и разрешить на клиентах входящие пинги.

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

Спасибо за ответ.

По умолчанию в dhcp стоит опция allow bootp и клиенты загружаются. В dhcpd.leases появляется запись с временем аренды max-lease-time 86400, по истечении времени освобождается, запись становится free, адрес переходит в свободные фактически через 30-40 дней, писал вначале уже.

Через дерективу host адреса выдаются исключительно по hardware ethernet, если не задан dhcp-client-identifier.

С ума сойду для каждого компа прописывать. Хочется не делать этого. Сейчас так загружаю проблемные компы.

Писал про range вначале.

По моим соображениям deny duplicates должно спасти, но ощущение, что эта опция вообще ни на что не влияет.

Вообще-то нормальная система перед использованием IP проверяет ARP, и NACK занятый. Для ненормальных можно включить опцию ping-check и разрешить на клиентах входящие пинги.

Спасибо, завтра посмотрю.

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

появляется запись с временем аренды max-lease-time 86400

Значит это не BOOTP, ведь у тебя dynamic-bootp-lease-length 60.

По моим соображениям deny duplicates должно спасти

Не совсем, deny duplicates говорит, что один MAC, описанный в директиве host, может иметь только один IP независимо от Client ID. Если дубликаты разрешены, то каждый Client ID получит в аренду свой адрес.

baka-kun ★★★★★ ()
Ответ на: комментарий от al_platonov

Не на всех клиентах входящие пинги разрешены :(

Именно поэтому лучше отдельный диапазон для статики.

А в корпоративных условиях отправляешь своих эникеев пробежаться по офису и включить, если централизованной политикой не рулится.

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