foxroot Опубликовано 2 декабря, 2017 · Жалоба Добрый день! Имеется сервер 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? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 2 декабря, 2017 · Жалоба На коммутаторах фильтровать можно, ACL как правило пофик, оно матчит по оффсетам. Я не понял: - по какому признаку ты хочешь фильтровать? - почему дхцп сервер помирает, ему ресурсов на ответы не хватает? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
foxroot Опубликовано 2 декабря, 2017 · Жалоба 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 полноценный. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 3 декабря, 2017 · Жалоба Хотелка "странная", насколько я понял, ты хочешь прикрутить костыль который будет фильтровать по опции все маки, кроме тех, которые должен обслужить дхцп сервер? Так лучше сразу дхцп сервер полечить, хотя бы тюнингом. Потом, мой перловый дхцп сервер легко держал 1к запросов/сек, можно и больше, всё зависит от проца и откуда брать лизы. Чтобы сервер не долбили - можно выдать всем адреса из ненужного диапазона с безвредными для твоей сети настройками, клиенты хотя бы заткнутся и поток трафика к дхцп серверу многократно уменьшится. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
foxroot Опубликовано 3 декабря, 2017 · Жалоба а что за perl DHСP сервер? как его инсталить и чем он лучше? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vurd Опубликовано 3 декабря, 2017 · Жалоба Речь про самописный сервер Ивана) У нам тут вообще выступление в клуб начинается с написания своего dhcp, я на сях писал.... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
foxroot Опубликовано 3 декабря, 2017 · Жалоба где можно качнуть как инсталить? есть инфа Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 3 декабря, 2017 · Жалоба Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 3 декабря, 2017 · Жалоба А почему бы дхцп не унести на роутер2? или через gre какой-нибудь запустить? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
guеst Опубликовано 4 декабря, 2017 · Жалоба А почему бы не разбирать поток на этом же сервере? зачем делать отдельный, если тоже самое можно сделать на этом ;) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
foxroot Опубликовано 4 декабря, 2017 · Жалоба если делать на этом то каким способом? eatables или каким софтом Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
foxroot Опубликовано 4 декабря, 2017 · Жалоба а что если я не хочу использовать в perl DHCP базу данных. Можно просто конфигурированиям подкинуть? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 4 декабря, 2017 · Жалоба 55 минут назад, foxroot сказал: а что если я не хочу использовать в perl DHCP базу данных. Можно просто конфигурированиям подкинуть? Можно. Просто реализуешь нужную логику и всё. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
foxroot Опубликовано 5 декабря, 2017 · Жалоба у кого нибудь есть пример с конфигами посмотреть так как с PERL я не силен Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 5 декабря, 2017 · Жалоба Так и я не силён, до сих пор этот сервер единственное что я написал на перле :) Думаю что нужно переписать начиная с sub db_get_requested_data() #my $dbh = $_[0]; - можно заюзать как массив где у тебя будет хранится то что прочитано из конфига с лизами/маками. Соответственно там на старте вместо коннекта к бд нужно читать в этот массив из файла. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
foxroot Опубликовано 5 декабря, 2017 · Жалоба есть следующий конфиг # 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 } Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
foxroot Опубликовано 5 декабря, 2017 · Жалоба allow unknown-clients; Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 5 декабря, 2017 · Жалоба Имхо, ограничение доступа только на основе DHCP - плохое решение. Как дополнительная мера - да, но не основная Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
foxroot Опубликовано 5 декабря, 2017 · Жалоба все таки как раздать всем оатсльным другие адреса? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 5 декабря, 2017 · Жалоба Вам уже подсказали самый простой вариант - описать логику выдачи ip адресов в скрипте на перле. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...