Я пытаюсь подключить мой к WLAN без использования NetworkManager. Я запускаю следующие команды после загрузки:

iwconfig wlan0 enc <WEP passwd> mode managed essid <name> channel 6
ifconfig wlan0 up
dhclient wlan0

В этот момент dhclient останавливается на века (возможно, 2 минуты), затем он возвращается с

PING 192.168.1.254 (192.168.1.254) from 192.168.1.65 wlan0: 56(84) bytes of data.

--- 192.168.1.254 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3000ms
pipe 3

.. Странно то, что когда я запускаю pkill dhclient; dhclient wlan0 после этого он подключается примерно через 3 секунды.

Есть идеи, что может быть причиной этой проблемы?

Изменить: о, и я попытался использовать флаг -timeout на dhclient, но это, похоже, не имело никакого значения (он все еще останавливался целую вечность).

2 ответа2

2

Это проблема устаревшего dhclient, который все еще реализован во всех дистрибутивах Linux. Скрипт dhclient должен иметь дело с Lease Timeout. Когда вы получаете доступ к беспроводной сети и запускаете dhclient, он привязывает IP-адрес и маску подсети, DNS-сервер и некоторые другие параметры к вашему беспроводному интерфейсу (wlan0). DHCP-сервер сдает этот IP в аренду вашему интерфейсу на ограниченное время (время аренды). Когда вы выключаете компьютер или по какой-либо причине происходит сбой сценария dhclient, счетчик времени аренды клиента останавливается. Затем вы загружаете компьютер или снова запускаете dhclient. Затем dhclient находит конфигурацию Prebind, которая ссылается на старую аренду, и не знает, действительна ли эта аренда или нет. Возникает проблема. Способ решения этой проблемы dhclient состоит в том, чтобы связать интерфейс с Prebind и попытаться пропинговать маршрутизатор (шлюз). Если проверка связи прошла успешно, предварительная привязка действительна и применяется к беспроводному интерфейсу (wlan0). Иначе, Prebind недействителен, и он отбрасывается.

Это объясняет причину неактивного состояния ("dhclient stalls atges"), оно ожидает ответа DHCP-сервера. И если этого не происходит, примерно через 2 минуты он пытается принять конфигурацию Prebind и проверяет связь со старым маршрутизатором («PING 192.168.1.254»).

У меня была та же проблема в моем Slackware, и я нашел всю информацию на странице руководства dhclient-script.

(man dhclient-script):

TIMEOUT DHCP-клиент не может связаться с DHCP-серверами. Тем не менее, старый договор аренды был идентифицирован, и его параметры были переданы как с BOUND. Сценарий конфигурации клиента должен проверить эти параметры и, если у него есть основания полагать, что они действительны, должен завершиться со значением ноль. Если нет, он должен выйти с ненулевым значением. Обычный способ проверить аренду - это настроить сеть как с REBIND (так как это может быть вызвано для проверки более чем одной аренды), а затем пропинговать первый маршрутизатор, определенный в $ маршрутизаторах. Если ответ получен, аренда должна быть действительной для сети, к которой интерфейс подключен в настоящее время. Было бы более полно попытаться пропинговать все маршрутизаторы, перечисленные в $ new_routers, а также те, что перечислены в $ new_static_routes, но современные сценарии этого не делают.

0

Убедитесь, что служба NetworkManager вообще не запускается, если вы вручную настраиваете соединение. В прошлом я сталкивался с тем, что он пытается постоянно возвращать мои изменения конфигурации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .