foxroot Posted December 2, 2017 · Report post Добрый день! Имеется сервер DHCP на Centos 6.6 в процессе эксплуатации возникли проблемы с сервером (перестает выдавать IP) Произведен анализ ситуации было установлено что на сервер идет куча паразитного трафика с запросами на получение Ip. Но сервер им их не дает так как в dhcp.conf указан class по выдаче IP только указанным Mac-address-ам Проанализировав трафик с помощью wireshark было выявлено что DHCP/bootstrap идет от source mac-address роутера (куда подключен клиент) до destination mac address роутера куда подключен DHCP сервер. Так как пакеты DHCP ходят по relay Атрибут клиентского mac-address-a передается как option 60 (client mac-address) ( это видно при разборке пакетов на уровня 5) Поэтому отфильтровать паразитным трафик на коммутаторах сети и маршрутизаторах сети не возможно так как они фильтруют и разбирают пакет только на L2 и L3 уровнях соответственно. т.е. коммутатор видит только source и destination mac роутера и не может блокировать пакеты мусорного трафика, для него все пакеты будут идти с одинаковым mac-address возможно ли как то на транзите поставить linux сервер и отфильтровать мусор путем разбора пакетов и форвордить только нужные? если да то каким способом писать фильтр? iptables or eatables? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 2, 2017 · Report post На коммутаторах фильтровать можно, ACL как правило пофик, оно матчит по оффсетам. Я не понял: - по какому признаку ты хочешь фильтровать? - почему дхцп сервер помирает, ему ресурсов на ответы не хватает? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
foxroot Posted December 2, 2017 · Report post ACL не может отфильтровать тем более на коммутаторах. Коммутаторы изучают L2 уровень он видит только source и destination mac-address. А данные параметры у всех пакетов одинаковые как у мусора так и у полезных пакетов. работает все по следующей схеме [DHCP Server]- switch-router1 --==-- сеть--==- router2- switch- клиент на роутере настроен DHCP relay, так как сеть не плоская, а маршрутизация. когда настроен relay, то пакеты которые приходят в сервер DHCP, будут выглядеть как (Sourse mc-address router2) destination mac-address router1 для всех пакетов, что правильных что не правильных и поэтому на коммутаторе ты не зафильтруешь. атрибуты фильтра (mac-address) одинаковые для всех. все пакеты пришли с одного и того же роутера среди этих пакетов есть правильные ( от клиентов с определенным набором mac-address) на сервере написал class чтобы раздавать ip только нужным клиентам. Но пакеты то, все равно все доходят до сервера и долбят его. Файл лога более 4G /var/log/ messedge за сутки. Отфильтровывать нужно разбирая пакет до 5 уровня а не до 2 и 3 как коммутатор и маршрутизатор. хотел поставить другой сервер перед DHCP в bridge и написать какие нибудь фильтры если можно? суть вопроса именно в этом фильтровать нужно по class 60 а именно чтобы программное обеспечение могло разобрать пакет посмотреть поле client mac и если оно не совпадает просто drop packet почему помирает DHCP сказать не могу предположение - паразитный трафик. серверное железо HP 385G7 полноценный. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 3, 2017 · Report post Хотелка "странная", насколько я понял, ты хочешь прикрутить костыль который будет фильтровать по опции все маки, кроме тех, которые должен обслужить дхцп сервер? Так лучше сразу дхцп сервер полечить, хотя бы тюнингом. Потом, мой перловый дхцп сервер легко держал 1к запросов/сек, можно и больше, всё зависит от проца и откуда брать лизы. Чтобы сервер не долбили - можно выдать всем адреса из ненужного диапазона с безвредными для твоей сети настройками, клиенты хотя бы заткнутся и поток трафика к дхцп серверу многократно уменьшится. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
foxroot Posted December 3, 2017 · Report post а что за perl DHСP сервер? как его инсталить и чем он лучше? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vurd Posted December 3, 2017 · Report post Речь про самописный сервер Ивана) У нам тут вообще выступление в клуб начинается с написания своего dhcp, я на сях писал.... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
foxroot Posted December 3, 2017 · Report post где можно качнуть как инсталить? есть инфа Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted December 3, 2017 · Report post Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
myth Posted December 3, 2017 · Report post А почему бы дхцп не унести на роутер2? или через gre какой-нибудь запустить? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
guеst Posted December 4, 2017 · Report post А почему бы не разбирать поток на этом же сервере? зачем делать отдельный, если тоже самое можно сделать на этом ;) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
foxroot Posted December 4, 2017 · Report post если делать на этом то каким способом? eatables или каким софтом Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
foxroot Posted December 4, 2017 · Report post а что если я не хочу использовать в perl DHCP базу данных. Можно просто конфигурированиям подкинуть? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 4, 2017 · Report post 55 минут назад, foxroot сказал: а что если я не хочу использовать в perl DHCP базу данных. Можно просто конфигурированиям подкинуть? Можно. Просто реализуешь нужную логику и всё. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
foxroot Posted December 5, 2017 · Report post у кого нибудь есть пример с конфигами посмотреть так как с PERL я не силен Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted December 5, 2017 · Report post Так и я не силён, до сих пор этот сервер единственное что я написал на перле :) Думаю что нужно переписать начиная с sub db_get_requested_data() #my $dbh = $_[0]; - можно заюзать как массив где у тебя будет хранится то что прочитано из конфига с лизами/маками. Соответственно там на старте вместо коннекта к бд нужно читать в этот массив из файла. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
foxroot Posted December 5, 2017 · Report post есть следующий конфиг # subnet 10.244.1.0 netmask 255.255.255.0 { option routers 10.244.1.1; option ntp-servers 172.16.200.100; pool { range 10.244.1.2 10.244.1.254; allow members of "allow"; } } # subnet 10.244.2.0 netmask 255.255.255.0 { option routers 10.244.2.1; option ntp-servers 172.16.200.100; pool { range 10.244.2.2 10.244.2.254; allow members of "allow"; } } ....... таких блокох больше 250 шт class "allow" { match if (binary-to-ascii (16,8,":",substring(hardware, 0, 4)) = "1:0:26:aa") or (binary-to-ascii (16,8,":",substring(hardware, 0, 4)) = "1:0:16:e8") or (binary-to-ascii (16,8,":",substring(hardware, 0, 4)) = "1:0:2:2") or (binary-to-ascii (16,8,":",substring(hardware, 0, 4)) = "1:14:c0:89") or (binary-to-ascii (16,8,":",substring(hardware, 0, 4)) = "1:ac:db:da"); } как прописать чтобы всем другим (которые не попали в class) раздавались другие IP ? Например один большой SCOPE можно ли его написать как class ? class "ALL" { randge 10.245.0.0 10.245.255.254 } Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
foxroot Posted December 5, 2017 · Report post allow unknown-clients; Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
myth Posted December 5, 2017 · Report post Имхо, ограничение доступа только на основе DHCP - плохое решение. Как дополнительная мера - да, но не основная Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
foxroot Posted December 5, 2017 · Report post все таки как раздать всем оатсльным другие адреса? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted December 5, 2017 · Report post Вам уже подсказали самый простой вариант - описать логику выдачи ip адресов в скрипте на перле. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...