LINUX.ORG.RU
ФорумAdmin

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

 ,


0

2

Всем привет.

В общем сабж. Ситуация такая: после глобального выключения и включения подачи энергии мой сервер поднимается быстрее, чем провайдерское барахло на чердаке.

В результате в момент, когда мой сервер начинает запрашивать адрес по DHCP, сеть провайдера еще не доступна.

И вот вместо того, чтобы слать запросы до победного конца, эта хрень после всего пяти попыток, длившихся 31 секунду, отваливается, и пока не дернешь ее руками, адрес запрашивать больше не пытается.

В общем, как отучить? В конфиге на этот счет нифига нет. Вероятно, можно обойти проблему завысив параметр reboot, но это фиговый метод.

Где задается количество запросов или время на получение адреса при выполнении ifup?


  1. Какой дистрибутив, какой версии?

  2. Как и чем настроена сеть?

  3. С какими опциями запускается dhclient? ps -Af | grep dhclient

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Несмотря на теги. И какой dhcp клиент? «31 секунду» Сильно похоже на dhcpcd.

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)

Судя по упоминанию параметра reboot - речь всё же о dhcpcd.

man dhcpcd говорит следующее:

     -t, --timeout seconds
             Timeout after seconds, instead of the default 30.  A setting of 0
             seconds causes dhcpcd to wait forever to get a lease.  If dhcpcd
             is working on a single interface then dhcpcd will exit when a
             timeout occurs, otherwise dhcpcd will fork into the background.

В Gentoo конфиг можно записать в /etc/dhcpcd.conf, как в других дистрибутивах - смотри в манах по дистрибутиву

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

Какой дистрибутив, какой версии?

Ubuntu 18.04.2 LTS

Как и чем настроена сеть?

Классически через /etc/network/interfaces: auto eth0 iface eth0 inet dhcp

С какими опциями запускается dhclient?

/sbin/dhclient -1 -4 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -I -df /var/lib/dhcp/dhclient6.eth0.leases eth0

Судя по форумам, параметр '-1' отвечает за такое поведение, но откуда он передается в комстроку не нашел. Пишут, что захардкорен в код ifup.

quwy
() автор топика
Ответ на: комментарий от Pinkbyte

Судя по упоминанию параметра reboot - речь всё же о dhcpcd.

Он самый.

-t, --timeout seconds

Это круто, но куда мне это вписывать? Вызов dhcpcd делается из кода ifup и командная строка там такая, какая есть, я не знаю где ее поменять можно.

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

Да, тебе нужно сделать так, чтобы -1 убрался. И скорее всего нужно добавить -nw.

Возможно есть способ сделать это без костылей, но когда у меня был debian, я решал подобную проблему так:

iface eth0 inet manual
      pre-up /sbin/dhclient -nw -4 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -I -df /var/lib/dhcp/dhclient6.eth0.leases eth0
      post-down /sbin/dhclient -x -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -df /var/lib/dhcp/dhclient6.eth0.leases
Deleted
()
Ответ на: комментарий от quwy

Он самый.

Все-таки нет. Вы сами привели выше выхлоп с dhclient

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

ты выше приводишь выхлоп dhclient, а говоришь что у тебя dhcpcd? Определись! Это РАЗНЫЕ программы, у них РАЗНЫЙ набор опций.

Где искать файл конфигурации твоего dhcp-клиента - я тебе уже подсказал. dhcpcd помимо опций указанных в командной строке читает еще и глобальный конфиг - лучше пихать такие опции туда. Делает ли так dhclient - хз, у меня на системах с дистрами общего назначения везде либо статика либо dhcpcd в качестве dhcp-клиента.

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

ты выше приводишь выхлоп dhclient, а говоришь что у тебя dhcpcd? Определись! Это РАЗНЫЕ программы, у них РАЗНЫЙ набор опций.

Прошу прощения. В логах [dhclient], имя исполняемого файла привел выше.

Где искать файл конфигурации твоего dhcp-клиента - я тебе уже подсказал.

Файла /etc/dhcpcd.conf нет, есть /etc/dhcp/dhclient.conf, но там ничего подходящего не вижу.

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

Все это странно, ман по dhclient говорит что у него по умолчанию timeout 60 секунд, а не 30. Хоть это не имеет отношения в решению задачи, но что у вас прописано в dhclient.conf в параметре timeout ?

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

netplan точно выпилен

Проверил сейчас. Да, netplan удален, все что нужно для ifupdown сделано.

quwy
() автор топика
Ответ на: комментарий от anc

что у вас прописано в dhclient.conf в параметре timeout ?

300. Причем так было изначально. Но в syslog попытки заполучить адрес завершились через 31 секунду после начала.

quwy
() автор топика
Ответ на: комментарий от quwy
  1. Причем так было изначально. Но в syslog попытки заполучить адрес завершились через 31 секунду после начала.

А после этого процесс dhclient убивается или продолжает работать? А то у него задержки между попытками получить адрес растут нелинейно.

В том числе, есть вот такое:

retry time;

The retry statement determines the time that must pass after the client has determined that there is no DHCP server present before it tries again to contact a DHCP server. By default, this is five minutes.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

А после этого процесс dhclient убивается или продолжает работать?

Сейчас не скажу. Чтобы сымитировать ситуацию, нужен хоть какой-нибудь свитч (чтобы сетевуха видела подключенный кабель), а у меня сейчас ничего нет.

А то у него задержки между попытками получить адрес растут нелинейно.

В логе все равномерно.

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

Чтобы сымитировать ситуацию, нужен хоть какой-нибудь свитч (чтобы сетевуха видела подключенный кабель)

Вы что-то странное пишете. В топике вы написали:

после глобального выключения и включения подачи энергии мой сервер поднимается быстрее, чем провайдерское барахло на чердаке.

Причем тут link ? Его может и не быть от слова совсем, вдруг у прова оборудование погорело от «переходного процесса»? И менять его будут не за «30 секунд».

Проверяйте выдергиванием кабеля. Ведь такое тоже может быть.

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

Вы что-то странное пишете.

Если нет линка, то зачем DHCP-запросы слать? Куда?

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

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

Если нет линка, то зачем DHCP-запросы слать? Куда?

А демон сидящий на интерфейсе должен сразу помереть? Неверный ответ. Давайте рассмотрим на примере ноута, «я переезжаю из страны с страну» сижу в самолете, смотрю кинцо на ноуте, но мне же не надо ребутать ноут, что бы получить адрес «от того отеля в котором я остановился»

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

ЗЫ Повторюсь «Проверяйте выдергиванием кабеля.» это самое надежное для проверки как вам выше написал mironov_ivan «А после этого процесс dhclient убивается или продолжает работать?»

anc ★★★★★
()

Глань выхлоп ifup eth0 -v И тайминги systemd

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