сервер dhcp, выдающий единственный адрес (для шнура usb)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
infra_hdc
Сообщения: 376
ОС: GNU/Linux

сервер dhcp, выдающий единственный адрес

Сообщение infra_hdc »

Всем здрасте!

Есть тазик, на котором стоит Debian GNU/Linux 5.0 (Lenny) i386 bigmem

для облегчения работы с шнуром

GEMBIRD USB 2.0 NETWORK LINK CABLE
PART NUMBER UANC22V

поднял на том тазике DHCP-сервер

проблема в том, что он выдаёт только первый раз, а если не освободить аренду и грубо ребутнуть клиента, то в следующий раз получаем таймаут выдачи IP-адреса, даже по истечении max-lease-time, из-за чего клиенту присваивается адрес из подсети 169.254.0.0/16

наверно, дело всё в том, что на том конце хвоста MAC-адрес после ребута уже другой?

ВОПРОС: как победить сервер так, чтобы при окончании аренды он выдавал освободившийся адрес?
и не приходилось давать команду перезагрузки сервера

Код: Выделить всё

# /etc/init.d/dhcp3-server restart


ибо даже если ждешь и 10 минут, и больше, в то время как максимум аренды 6 минут, все равно не хочет выдавать?

конфиги:

-- главный конфиг

Код: Выделить всё

# grep -v ^# /etc/dhcp3/dhcpd.conf

ddns-update-style none;

log-facility local7;

subnet 192.168.44.0 netmask 255.255.255.252 {
authoritative;
default-lease-time 60;
max-lease-time 360;
range 192.168.44.2 192.168.44.2;
option subnet-mask 255.255.255.252;
option broadcast-address 192.168.44.3;
option routers 192.168.44.1;
option domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;
}


-- ограничение на юзанье интерфейсов:

Код: Выделить всё

# grep ^INTERFACES /etc/default/dhcp3-server
INTERFACES="usb0"


для примера, список арендованных ранее адресов:

Код: Выделить всё

$ cat /var/lib/dhcp3/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-V3.1.1

lease 192.168.44.2 {
  starts 2 2010/09/28 06:40:16;
  ends 2 2010/09/28 06:45:16;
  tstp 2 2010/09/28 06:45:16;
  cltt 2 2010/09/28 06:40:16;
  binding state free;
  hardware ethernet 06:18:05:3e:62:ee;
  uid "\001\006\030\005>b\356";
}
lease 192.168.44.2 {
  starts 2 2010/09/28 06:56:58;
  ends 2 2010/09/28 07:01:58;
  cltt 2 2010/09/28 06:56:58;
  binding state active;
  next binding state free;
  hardware ethernet 22:63:a0:08:01:0b;
  uid "\001\"c\240\010\001\013";
  client-hostname "sysresccd";
}
lease 192.168.44.2 {
  starts 2 2010/09/28 06:56:58;
  ends 2 2010/09/28 07:01:58;
  tstp 2 2010/09/28 07:01:58;
  cltt 2 2010/09/28 06:56:58;
  binding state free;
  hardware ethernet 22:63:a0:08:01:0b;
  uid "\001\"c\240\010\001\013";
}


:rolleyes: ??
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: сервер dhcp, выдающий единственный адрес

Сообщение rm_ »

Такое впечатление, что MAC-адрес клиента меняется после каждой перезагрузки (что для такого экзотического сетевого устройства в общем-то и неудивительно). Решение: перед поднятием интерфейса на клиенте, устанавливайте ему любой придуманный, но главное - постоянный MAC-адрес:

Код: Выделить всё

ifconfig ethX hw ether 001122334455
Спасибо сказали:
Аватара пользователя
infra_hdc
Сообщения: 376
ОС: GNU/Linux

Re: сервер dhcp, выдающий единственный адрес

Сообщение infra_hdc »

rm_ писал(а):
28.09.2010 14:23
Такое впечатление, что MAC-адрес клиента меняется после каждой перезагрузки (что для такого экзотического сетевого устройства в общем-то и неудивительно). Решение: перед поднятием интерфейса на клиенте, устанавливайте ему любой придуманный, но главное - постоянный MAC-адрес:

Код: Выделить всё

ifconfig ethX hw ether 001122334455

Респект, уважаемый. :) Если комп будет один и тот же, который надо будет подключать каждый раз, например нетбук, то да, это решение: можно поиграться с udev, чтобы автоматически менялся MAC-адрес? Но это еще более изощрённые костыли ))) Такие воркараунды лишают задачу изюминки автоматичности. Верней, это уже решение ДРУГОЙ задачи. Данная же задача -- грамотно настроить сервер, возможно в гетерогенной среде, где могут жить и клиенты-оффтопики, и простое подключение кабеля даёт связь. Вызов же dhcpcd показан на конкретике, но я заварил эту кашу в расчёте на будущие применения в разных дистрах, а не только, как в данном случае, со спасательного диска SystemRescueCd. Даже если что-то конкретное вводить адресное с консоли под никсами, то явно не взятый с потолка MAC-арес, который я не знаю как выбрать, и надо будет помнить, и возможно вносить в документацию сетевого хозяйства.
Легче уж ребутить DHCP-сервер по планировщику каждые 5 минут

Код: Выделить всё

# crontab -e

добавив задачу

Код: Выделить всё

*/5 * * * /etc/init.d/dhcp3-server restart

и рыдать над километровыми логами рестартов :)
либо после втыкания шнура на клиенте сделать

Код: Выделить всё

ifconfig usb0 192.168.44.1 netmask 255.255.255.252; route add default gw 192.168.44.1; nano -w /etc/resolv.conf

что намного проще, нежели городить весь этот огород с сервером dhcp :crazy:
Неужели нельзя просто нормально настроить сервер dhcp так, чтоб он без рестарта забывал предыдущие завершённые аренды IP-адресов?? :)
PS: еще один вариант был бы возможнен, если бы данная девайсина нормально отрабатывала состояние линка (в таком случае можно было бы со стороны сервера по нормальному событию "появление линка" стартовать dhcp-сервер, и завершать его при пропадании лина), ведь даже если с одной стороны кабель не вставлен в комп, то должно считаться, что связи нет, т.к. линк то с самим кабелем конечно есть, и по lsusb он виден, но с кем физически он связан? однако ж, считается, что если второй конец хвоста не подключен, то связь со средой всё равно есть:

Код: Выделить всё

# ethtool usb0
Settings for usb0:
    Current message level: 0x00000007 (7)
    Link detected: yes

и, разумеется, подключенная часть хвоста в состоянии UP:

Код: Выделить всё

# ifconfig usb0
usb0      Link encap:Ethernet  HWaddr 36:9b:cf:9a:60:1b
          inet addr:192.168.44.1  Bcast:192.168.44.3  Mask:255.255.255.252
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:5580 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:474 (474.0 B)

вот такая петрушка :)
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: сервер dhcp, выдающий единственный адрес

Сообщение Rootlexx »

infra_hdc писал(а):
28.09.2010 11:32
ибо даже если ждешь и 10 минут, и больше, в то время как максимум аренды 6 минут, все равно не хочет выдавать?

(man dhcpd.conf) писал(а):...
max-lease-time time;
Time should be the maximum length in seconds that will be assigned to a lease. The only exception to this is that Dynamic BOOTP lease lengths, which are not specified by the client, are not limited by this maximum.
...

Поэтому:
(man dhcpd.conf) писал(а):...
dynamic-bootp-lease-length length;
The dynamic-bootp-lease-length statement is used to set the length of leases dynamically assigned to BOOTP clients. At some sites, it may be possible to assume that a lease is no longer in use if its holder has not used BOOTP or DHCP to get its address within a certain time period. The period is specified in length as a number of seconds. If a client reboots using BOOTP during the timeout period, the lease duration is reset to length, so a BOOTP client that boots frequently enough will never lose its lease. Needless to say, this parameter should be adjusted with extreme caution.
...

Не то ли, случайно?
Спасибо сказали:
Аватара пользователя
infra_hdc
Сообщения: 376
ОС: GNU/Linux

Re: сервер dhcp, выдающий единственный адрес

Сообщение infra_hdc »

Rootlexx писал(а):
28.09.2010 17:13
(man dhcpd.conf) писал(а):...
dynamic-bootp-lease-length length;
...

Не то ли, случайно?

Добавил, правда на другом железе и версии линуха клиента -- всё ок, раздаёт после ребута (и изменения MAC-адреса соответственно).
Для надёжности потом закоментировал -- собака, всё равно выдаёт, т.е. с той конфигурацией, которая была до задавания вопроса, т.е. эффект пропал.
Надо будет попробовать на том клиенте, что вначале был.
Попробую завтра. Неужели такое возможно из-за клиентской части? 0_о
Спасибо сказали:
Аватара пользователя
infra_hdc
Сообщения: 376
ОС: GNU/Linux

Re: сервер dhcp, выдающий единственный адрес

Сообщение infra_hdc »

Похоже, дело имеет отношение к железу?
Т.к., когда, после долгих мучений, воткнул хвост клиента в заднюю панель, то после грубой перезагрузки через 5 минут -- получил адрес. А до этого втыкал во Front. Проблемное железо: системный блок DEPO Neos, внутри стоит материнка MS-6174 VER.5, известная на сайте ru.msi.com как 845GVM (PCB 5.0); проц -- Celeron 2.4 GHz
В то время как у клиента, у которого вобще с этим нет проблем, у нетбука ASUS EeePC 900, втыкал в разрые root hub-ы -- везде ОК.
:)
Спасибо сказали: