Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Сценарии настройки клиента DHCP  (Прочитано 1246 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Sliver

  • Автор темы
  • Участник
  • *
  • Сообщений: 104
  • Administrator
    • Просмотр профиля
Сценарии настройки клиента DHCP
« : 12 Январь 2016, 12:26:09 »
Подскажите, как правильно настроить работу dhcpcd-run-hooks в последней версии клиента DHCP, что бы выполнялся сценарий поднятия статических маршрутов?
Имеется несколько подключений к провайдерам интернета с реальными IP и одно из подключений настраивается средствами DHCP, при этом есть задача настройки одновременной работы всех шлюзов интернета, но с различными метриками, с целью доступа к серверу по всем каналам интернета.
В /etc/dhcp/dhclient-enter-hooks.d/ лежит такой скрипт:
(Нажмите, чтобы показать/скрыть)
Он должен добавлять необходимый маршрут в дефолтную таблицу маршрутизации с необходимой метрикой, потом добавить маршрут в дополнительную таблицу uplink3, добавить правило маршрутизации для настраиваемой сети в дополнительную таблицу uplink3, а в конце отключить присвоение маршрута по-умолчанию, устанавливаемый DHCP-клиентом.
Скрипт срабатывает и делает всё необходимое, но только по прошествии определённого времени, установленного DHCP-сервером в параметре DHCP Lease Time.
Причиной этому возможно является то, что скрипт не срабатывает по событию BOUND, когда DHCP-клиент получил новую аренду IP от DHCP-сервера ???
Перечитал man по dhcpcd-run-hooks, перепроверил все причины-события, при которых должны выполняться необходимые команды из скрипта, переписал скрипт и выделил причину BOUND в отдельную проверку в скрипте, т.к. при этом событии нет необходимости удалять старые маршруты:
(Нажмите, чтобы показать/скрыть)
Но всё равно скрипт срабатывает только через время при событиях RENEW или REBIND :-\
« Последнее редактирование: 12 Январь 2016, 16:29:51 от Sliver »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26081
    • Просмотр профиля
Re: Сценарии настройки клиента DHCP
« Ответ #1 : 12 Январь 2016, 14:34:32 »
Вроде тут в соседней теме уже выяснили, что есть дополнительные события.
Займитесь отладкой, логируйте все запуски своего скрипта, смотрите, что когда передаётся.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

serchik

  • Гость
Re: Сценарии настройки клиента DHCP
« Ответ #2 : 12 Январь 2016, 15:26:11 »
Вообще ни в чем не уверен, но если поднять dhclient (или что там у вас) при очищенном кэше /var/lib/dhcp/ ?

Пользователь решил продолжить мысль 12 Январь 2016, 15:28:48:
Пинудительно просили сервер dhcpd выслать вам настройки?
« Последнее редактирование: 12 Январь 2016, 15:28:48 от serchik »

Оффлайн Sliver

  • Автор темы
  • Участник
  • *
  • Сообщений: 104
  • Administrator
    • Просмотр профиля
Re: Сценарии настройки клиента DHCP
« Ответ #3 : 12 Январь 2016, 16:53:09 »
Вроде тут в соседней теме уже выяснили, что есть дополнительные события.
А где эта тема, а то я пропустил? :-\
Займитесь отладкой, логируйте все запуски своего скрипта, смотрите, что когда передаётся.
Благодарю за хорошую мысль, так и сделал. Лог /tmp/dhclient-script.debug:
(Нажмите, чтобы показать/скрыть)
Получается, событие BOUND передаётся, а скрипт не срабатывает всё равно :'(
Вообще ни в чем не уверен, но если поднять dhclient (или что там у вас) при очищенном кэше /var/lib/dhcp/ ?
Там действительно лежал /var/lib/dhcp/dhclient.eth0.leases с предварительными настройками интерфейса
(Нажмите, чтобы показать/скрыть)
Переименовал, перегрузил сервер, но не помогло
Принудительно просили сервер dhcpd выслать вам настройки?
Нет, каждый раз перегружаю сервак :)

serchik

  • Гость
Re: Сценарии настройки клиента DHCP
« Ответ #4 : 12 Январь 2016, 18:01:20 »
А я то думал, что у Вас событие BOUND не срабатывает (тут я сильно удивился), а оказывается у Вас не работает скрипт. Тогда присоединяюсь к словам AnrDaemon, логируйте все, в том числе и результат выполнения тех команд, которые должны выполняться при наступлении события BOUND. Сразу найдете ошибку.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26081
    • Просмотр профиля
Re: Сценарии настройки клиента DHCP
« Ответ #5 : 12 Январь 2016, 19:12:04 »
Логируйте на входе в скрипт. До того, как начнёте обработку.
Узнаете все события и вообще всё.

И не стесняйтесь сохранять и текущее состояние сетевых настроек тоже.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Sliver

  • Автор темы
  • Участник
  • *
  • Сообщений: 104
  • Administrator
    • Просмотр профиля
Re: Сценарии настройки клиента DHCP
« Ответ #6 : 12 Январь 2016, 23:31:15 »
В общем, логи показали, что скрипт срабатывает на событие BOUND, но в нём не выполняются две команды$ ip route add default via $new_routers dev $interface table default metric 10
$ ip route add default via $new_routers dev $interface table $table
Но, каким-то образом, эти команды выполняются при других событиях RENEW|REBIND|REBOOT|TIMEOUT ???
Самое интересное, что скрипт полностью выполняется и при BOUND, но если из команд убрать 'dev $interface'. Только при этом ip route show показывает маршруты с 'dev br3', где br3 - один из мостов, поднятый в системе.
Подозревал, что проблема связана с тем, что в скрипт передаётся переменная interface='eth0', а т.к. она задаётся повторно в операторе case или if (переписывал скрипт с if) при проверке, то возникает конфликт, а при других событиях переменная interface='eth0' наверно не передаётся и по этому всё срабатывает. Но оказалось не так, потому что если строго вбить 'dev eth0', скрипт не срабатывает при BOUND. Но даже если вбить dev eth3 или dev eth1, все равно не срабатывает при BOUND.
Не могу найти этому логическое объяснение :-[
« Последнее редактирование: 12 Январь 2016, 23:46:16 от Sliver »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26081
    • Просмотр профиля
Re: Сценарии настройки клиента DHCP
« Ответ #7 : 12 Январь 2016, 23:58:22 »
Скорее всего срабатывает.
Проверь ip route show table all type unicast перед завершением скрипта.
У меня подозрение, что твой маршрут перебивается где-то дальше.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Sliver

  • Автор темы
  • Участник
  • *
  • Сообщений: 104
  • Administrator
    • Просмотр профиля
Re: Сценарии настройки клиента DHCP
« Ответ #8 : 13 Январь 2016, 00:11:30 »
AnrDaemon, проверил, не срабатывает.
Полез ещё в /etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes, он почему-то оказался включён по-умолчанию.
(Нажмите, чтобы показать/скрыть)
Отключил, перегрузил, но не помогло.
В скрипте в после каждой команды прописал вывод в лог:
(Нажмите, чтобы показать/скрыть)
Второй вариант скрипта
(Нажмите, чтобы показать/скрыть)
:-[
По логам, команды добавления маршрутов не выполняются при BOUND. Хотя если убрать dev $interface, то выполняются, но с ненужным результатом. Не пойму, как та же команда может выполняться, но при ином событии?!
Вот ещё в логе /var/log/upstart/network-interface-eth0.log пишет такое:
Цитировать
Error: an inet prefix is expected rather than "table".
Т.е. проблема из-за предыдущего параметра - dev $interface ???
« Последнее редактирование: 13 Январь 2016, 00:19:28 от Sliver »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26081
    • Просмотр профиля
Re: Сценарии настройки клиента DHCP
« Ответ #9 : 13 Январь 2016, 00:17:37 »
Я половину не понимаю.
Я предложил логировать маршруты до и после применения ваших правил. Где оно?…
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Sliver

  • Автор темы
  • Участник
  • *
  • Сообщений: 104
  • Administrator
    • Просмотр профиля
Re: Сценарии настройки клиента DHCP
« Ответ #10 : 13 Январь 2016, 00:23:23 »
логировать маршруты до и после применения ваших правил.
А как это лучше сделать? Выполнить эту команду сразу после заргузкиip route show table all type unicastа потом её же, но после срабатывания RENEW?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26081
    • Просмотр профиля
Re: Сценарии настройки клиента DHCP
« Ответ #11 : 13 Январь 2016, 00:32:50 »
Выполнить эту команду в начале скрипта, перенаправив вывод в лог, а потом в конце скрипта.
Чтобы видеть результаты работы всего скрипта.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Sliver

  • Автор темы
  • Участник
  • *
  • Сообщений: 104
  • Administrator
    • Просмотр профиля
Re: Сценарии настройки клиента DHCP
« Ответ #12 : 13 Январь 2016, 00:51:37 »
В общем, сделал, думаю логи нет смысла сюда выкладывать. Смысл неизменный:
  • до срабатывания BOUND в системе нет ни маршрутов для нужных таблиц, ни маршрута для подсети интерфейса eth0, который устанавливается ядром.
  • после срабатывания BOUND, скрипт срабатывает, но не запускаются те две команды, но остальное срабатывают и ядро поднимает маршрут для сети c eth0
  • через время, но до события RENEW маршруты остаются неизменными, а после RENEW, о чудо, скрипт срабатывает и поднимаются все необходимые маршруты
???

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26081
    • Просмотр профиля
Re: Сценарии настройки клиента DHCP
« Ответ #13 : 13 Январь 2016, 00:56:25 »
Вот это уже дико странно…
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Sliver

  • Автор темы
  • Участник
  • *
  • Сообщений: 104
  • Administrator
    • Просмотр профиля
Re: Сценарии настройки клиента DHCP
« Ответ #14 : 13 Январь 2016, 02:18:41 »
Приукрасил и сжал скрипт с отладочной информацией, шоб логи были красивые:
(Нажмите, чтобы показать/скрыть)
(Нажмите, чтобы показать/скрыть)
???

 

Страница сгенерирована за 0.124 секунд. Запросов: 24.