?

Log in

No account? Create an account

Если бы министром интернета был я... - За хлеб и вольность!

Mar. 10th, 2017

02:19 pm - Если бы министром интернета был я...

Previous Entry Share Next Entry

Удивительно, но проблема множественных DHCP-серверов никем, похоже, никак не решается и никого не волнует.

Напомню, если ваш компьютер (на винде) имеет в настройках сети параметр "получать IP-адрес автоматически" (или такую настройку имеет ваш Ой-Фон, андроед и т.д. - а вот они так настроены просто всегда, у компьютеров есть хотя бы 1 процент исключений) - так вот, если так происходит, то после перезагрузки или подключения к новой сети устройство слушает рассылаемые по сети сигналы от так называемых DHCP-серверов, и поймав сигнал одного из них, соединяется с ним и получает от него данные этой сети: какой адрес свободен и его можно занять, и прочие параметры. После того как ваше устройство соглашается и занимает, по договоренности с DHCP-сервером, свободный адрес в данной сети, процесс подключения к сети заканчивается (именно этот процесс идет, когда после "обнаружены сети" начинает крутиться желтый кружок на индикаторе сети на экране - как видим, довольно длительный процесс и сложный).

Альтернативой является узнать (договориться с администратором) о заведомо свободном адресе, прописать его СТАТИЧЕСКИ в настройки устройства и всегда подключаться с этим адресом. Это крайне неудобно (функции компьютеров передаются людям), фактически ограничивает перечень возможных сетей подключения одной-двумя (то есть для публичных вайфай сетей вообще непригодно), а кроме того, на мобильных устройствах эта настройка часто вообще недоступна.

Так что же не так с прекрасным первым методом? Всё так. Кроме одного: что будет, если в сети окажутся два и более устройств, на которых запущена ПРОГРАММА (напомню, это просто программа) DHCP-сервер? "Правильный" при этом запущен на роутере, и именно пакеты с данными, поступающие от устройств, получивших правильный адрес от него (или статически, как описано выше, но согласованно с роутером) - будут пропускаться сквозь этот роутер наружу, в интернет и т.д. А компьютеры и другие устройства, которые получат от других DHCP-серверов неправильный адрес, будут видеть только друг друга, но не внешний мир или остальную сеть.

Откуда может взяться неправильный DHCP-сервер?

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

И, наконец, на любом компьютере под управлением Windows (и, конечно, Linux и, возможно, MacOS) лицо, имеющее права администратора, может запустить службу DHCP случайно или намеренно. И настроить любой пул раздаваемых адресов.

Внимание, ВОПРОС: что мешает за все десятилетия, которые проблема существует и не решается, модифицировать протокол, по которому работает DHCP, позволив включать в широковещательные пакеты, рассылаемые сервером, простой короткий идентификатор (пароль)? И позволить в настройках сети указывать этот пароль, так, чтобы устройство подключалось только к этому DHCP-серверу (а при отсутствии пароля - к любому)? Уже такое примитивное решение (даже без шифрования этих паролей - а можно сделать и это) полностью исключит случайные дублирования сервера и затруднит намеренные.

This entry was originally posted at http://taki-net.dreamwidth.org/2524041.html. Please comment there using OpenID.

Comments:

[User Picture]
From:strangerdiary
Date:March 10th, 2017 01:25 pm (UTC)
(Link)
Какой-то переусложненный вариант решения не самой большой проблемы.
(Reply) (Thread)
[User Picture]
From:a_yidisher_poet
Date:March 10th, 2017 03:22 pm (UTC)
(Link)
А для кого существует эта проблема?
(Reply) (Thread)
[User Picture]
From:konj_v_paljto
Date:March 10th, 2017 04:11 pm (UTC)
(Link)
несколько лет в саппорте интернет-провайдера.
основные сегменты сети - подсети на 10-200 абонентов с единой ДХЦП-зоной.
Таких сегментов - несколько тысяч.

За несколько лет в саппорте я могу вспомнить, наверное, 3 или 4 случая ДХЦП-флуда в сетях (таки да - просто кабель от провайдера включали в ЛАН-, а не в ВАН-порт роутера).
(Reply) (Thread)
[User Picture]
From:konj_v_paljto
Date:March 10th, 2017 04:19 pm (UTC)
(Link)
и, кстати.

в 95% случаев или больше топология сети, в которой работает DHCP-сервер - звезда, где центр зведы - этот сервер и есть.
DHCP-клиент откликается на первый DHCPOffer, пришедший после DHCPRequest.
При топологии "звезда" и сервере в центре звезды в общем-то очевидно, что первым придет оффер от центра звезды, а не от какого-либо другого узла, будь он даже этим узлом отправлен.

Сервер на компьютере с виндой отправит дхцп-оффер новому клиенту через роутер, а не напрямую.
И к моменту получения оффера от "левого" сервера, новый клиент уже получит (и примет) оффер от основного сервера - от роутера. Просто потому что он топологически ближе по сети.
(Reply) (Thread)
From:saccovanzetti
Date:March 10th, 2017 07:49 pm (UTC)
(Link)
извиняюсь за оффтопик(?)

есть такая проблема: старый андроид (эклер) после "сна" в 9 случаях из 10 не может подсоединиться к вайфаю: пытается, но сбрасывает. бесконечно. "раньше такого не было", точка доступа вроде тоже не менялась. после перезагрузки устройства обычно соединяется гораздо веселее. Такое ощущение, что это как-то связано с количеством живых WiFi дивайсов в сети.
(Reply) (Parent) (Thread)
[User Picture]
From:konj_v_paljto
Date:March 10th, 2017 11:38 pm (UTC)
(Link)
обычно лечится в настройках роутера. хотя по разному.
возможно, поможет уменьшение времени аренды айпи-адреса в настройке беспроводной сети, например. Чтобы роутер закреплял адрес за устройством на 3 часа, а не на 48, скажем.
Либо - именно лимиты на количество активных устройств в локальной сети и в вайфай-сети могут стоять на роутере.
Заочно бОльшего не скажу. гадание по юзерпику такое гадание по юзерпику :)
(Reply) (Parent) (Thread)
From:ichthuss
Date:March 10th, 2017 04:53 pm (UTC)
(Link)
По-моему, без изменения сущестчующих протоколов удобнее а) сделать DHCP-клиент, способный принять несколько настроек от разных серверов и протестировать их на предмет наличия интернета, б) дать юзеру возможность выбрать один из полученных вариантов.
(Reply) (Thread)
[User Picture]
From:taki_net
Date:March 10th, 2017 07:53 pm (UTC)
(Link)
Тоже метод.
(Reply) (Parent) (Thread)
[User Picture]
From:01petr
Date:March 10th, 2017 09:44 pm (UTC)
(Link)
поддельный dhcp сервер, может выдать настройки, которые будут работоспособны с точки зрения выхода в Интернет
(Reply) (Parent) (Thread)
From:ichthuss
Date:March 11th, 2017 01:05 am (UTC)
(Link)
К вопросу возможны два подхода: добиваться корректно ситуации, когда в каждом сегменте есть только один дхцп-сервер, либо же сделать так, чтобы работало даже в случае кривых роутеров. В первом случае моё предложение просто не нужно, во втором - ваше замечание не по делу.
(Reply) (Parent) (Thread)
[User Picture]
From:01petr
Date:March 11th, 2017 01:53 pm (UTC)
(Link)
Перечитайте снова всю ветку пожалуйста.
Вы предлагаете тестировать на наличие Интернета и выбирать такие настройки, я же возражаю, что поддельный сервер может обеспечивать доступ в Интернет. Т.е. критерий выбора по наличию доступа в Интернет может быть обманчив.
(Reply) (Parent) (Thread)
From:ichthuss
Date:March 11th, 2017 02:46 pm (UTC)
(Link)
Ну и то? Какой вред в этой ситуации может принести поддельный DHCP-сервер? Если в сетке такой бардак творится, её в любом случае нельзя считать безопасной, даже и через правильный шлюз. А через кого ходят https и vpn, в общем-то, безразлично. Юзеру что надо - чтобы вконтактег бегал, вот и ладушки.
(Reply) (Parent) (Thread)
[User Picture]
From:b0p0h0k
Date:March 10th, 2017 07:58 pm (UTC)
(Link)
ЕМНИП, DHCP server по своей инициативе ничего бродкастом не рассылает.
Наоборот, клиент в поисках адреса шлёт DISCOVER пакет на адрес 255.255.255.255.
И вот тут-то все DHCP серверы на сегменте отвечают пакетом OFFER.
Ну а дальше - лотерея. Чей ответ будет получен раньше, того и тапки.
Да, тут только дисциплиной. Никаких самодеятельных раутеров.
(Reply) (Thread)
[User Picture]
From:taki_net
Date:March 10th, 2017 08:01 pm (UTC)
(Link)
Да похер, кто шлет пакет.
(Reply) (Parent) (Thread)
[User Picture]
From:b0p0h0k
Date:March 10th, 2017 11:11 pm (UTC)
(Link)
Вот это посмотрите.
tl/dr: проблема признаётся, но в ближайшем будущем решение не ожидается.
(Reply) (Parent) (Thread)
[User Picture]
From:konj_v_paljto
Date:March 10th, 2017 11:39 pm (UTC)
(Link)
При топологии "звезда" и правильном сервере в центре звезды ответ от правильного примерно всегда придет первым.
любая локалка "по умолчанию" на одном роутере - звезда.
(Reply) (Parent) (Thread)
[User Picture]
From:taki_net
Date:March 11th, 2017 12:23 am (UTC)
(Link)
Я вежливо не комментирую, но по-моему про звезду ты свистишь.
(Reply) (Parent) (Thread)
[User Picture]
From:kondybas
Date:March 11th, 2017 09:34 am (UTC)
(Link)
Поскольку DHCP-сервер - это софт, то время ответа этого софта зависит от скорости выполнения кода, каковое время на порядки превышает время свитчирования пакетов. Первым отправит оффер тот сервер, который шустрее, а не тот, который ближе к барицентру сети.
(Reply) (Parent) (Thread)
[User Picture]
From:b0p0h0k
Date:March 11th, 2017 12:45 am (UTC)
(Link)
TS явно пишет о "дополнительных wifi раутерах", что противоречит вашему умолчанию.
Так что не звезда, а дерево, в каждом нетерминальном узле которого можно ожидать наличие "мусорного" сервера.
(Reply) (Parent) (Thread)
[User Picture]
From:vitovtas
Date:March 11th, 2017 12:51 am (UTC)

Авторизация в Микрософтовских сетях

(Link)
Александр,

Если Вас интересует, как эта проблема решается на профессиональном уровне, то вот прямая ссылка объясняющая как этот протокол был модифицирован для защищенных сетей - https://technet.microsoft.com/en-us/library/dd296633(v=ws.10).aspx. А что касается публичных сетей - то Вы правы, там каждый действует на свой страх и риск - spoofing attack,DNS spoofing и все прочие прелести, не убавить, не прибавить
(Reply) (Thread)
[User Picture]
From:pargentum
Date:March 11th, 2017 06:49 am (UTC)

Уже придумывали такое. Не так все просто с этим.

(Link)
https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol#Security

Another extension, Authentication for DHCP Messages (RFC 3118), provides a mechanism for authenticating DHCP messages. Unfortunately RFC 3118 has not seen (as of 2002) widespread adoption because of the problems of managing keys for large numbers of DHCP clients.[25] A 2007 book about DSL technologies remarked that "there were numerous security vulnerabilities identified against the security measures proposed by RFC 3118. This fact, combined with the introduction of 802.1x, slowed the deployment and take-rate of authenticated DHCP, and it has never been widely deployed."[26] A 2010 book notes that "[t]here have been very few implementations of DHCP Authentication. The challenges of key management and processing delays due to hash computation have been deemed too heavy a price to pay for the perceived benefits."[27]

More recent (2008) architectural proposals involve authenticating DHCP requests using 802.1x or PANA (both of which transport EAP).[28] An IETF proposal was made for including EAP in DHCP itself, the so-called EAPoDHCP;[29] this does not appear to have progressed beyond IETF draft level, the last of which dates to 2010.[30]
(Reply) (Thread)
[User Picture]
From:kondybas
Date:March 11th, 2017 08:09 am (UTC)
(Link)
PPPoE
(Reply) (Thread)
From:Шаманов Алексей
Date:March 13th, 2017 06:34 am (UTC)
(Link)
1) DHCP - СТАРЫЙ протокол. Он пришел из тех времен, когда о "безопасности", "аутентификации" и прочем-разном никто, в общем-то, не думал. /Та же проблема (Только в куда более серьёзных масштабах) есть, например, у SMTP - ПОЛНОНОЕ отсутствие какой-либо защиты на уровне дизайна протокола - спам, вирусы - вот это все./
2) DHCP - простой и, что даже более важно - _удобный_ как на стороне администратора, так и на стороне пользователя протокол.
3) Как следствие из п.1 и п.2 - это весьма и весьма широко распространенный протокол с ОГРОМНЫМ грузом "обратной совместимости". Любые изменения, которые его затрагивают повлияют на ТАКОЕ количество устройств, что мамадорогаяродименяобратно - а если учесть, что часть этих устройств не поддерживаемые, но рабочие... в общем, "дорого и больно".
Более того, размер проблемы - при её фактическом наличии - "несколько" меньше, чем может показаться со стороны. Широковещательный DHCPDISCOVER распространяется в рамках одного broadcast domain'а который, в минимально спроектированных а не "само насралося"(ТМ) сетях не так уж велик - сеть сегментируется на VLAN'ы, на маршрутизаторах с помощью DHCP Relay настраивается проброс DISCOVER\REQUEST на вполне конкретный DHCP-сервер, там, где это требуется используется аутентификация устройства на порту с помощью 802.1x в проводных сетях и WEP\WPA\WPA2 в wi-fi, для параноиков есть IPSEC-шифрование трафика, провайдеры используют VPN (Хотя бы минимальный PPPoE) с соответствующей аутентификацией перед выдачей сетевых параметров для подключения к сетям передачи данных, у администраторов есть средства поиска "левых" DHCP-серверов.
Ну и да, при всей мнимой "очевидности" решение проблемы весьма и весьма сложно. Как передать пароль всем клиентам сети, которые должны в ней работать? Вместе с WPA2-psk выдавать ещё один "мамой клянус, секретный!" пароль? Что делать, если !внизапна! в сети появится ДВА DHCP-сервера с одинаковым (А мы его выдаем всем клиентам по умолчанию) паролем? Использовать криптографию с открытым ключом аналогично SSL\TLS? Так распространение корневого сертификата и\или хэша самоподписанного сертификата тоже нифига не просто с точки зрения конечного пользователя.
В результате вышло так, как вышло - размер проблемы не так велик, как может показаться, кому надо - эту проблему с той или иной степенью успеха обкостылили, а тратить огромные - действительно ОГРОМНЫЕ ресурсы на решение проблем оставшихся за счет всех остальных желания нет.
(Reply) (Thread)
[User Picture]
From:freedom_of_sea
Date:March 21st, 2017 02:32 pm (UTC)
(Link)
есть софт (не помню имени). Он обнаруживает rogue dhcpd и запрашивает у него адреса, пока его пул не исчерпается.
(Reply) (Thread)