Доброго времени суток, уважаемые форумчане.
Исходные данные:
- Роутер DIR300
- прошивка: Firmware: DD-WRT v24-sp2
- подключен к интернет и имеет постоянный внешний IPВопрос: можно ли с помощью правил в iptables как-то определить на какой хост (IP) идет трафик, если он
превышает определенное значение?Ну например, если трафик на какой-то хост более 1Мб/сек, то сделать запись в лог (чтобы в логе можно было
увидеть, на какой IP этот трафик идет). Разумеется количество записей в лог можно ограничить, чтобы не засорять.
Хотя даже можно не байты считать, а количество пакетов в сек - и этого будет достаточно.Насколько я понимаю, надо:
- все пакеты с состоянием ESTABLISHED,RELATED как-то разделять: на каждый IP - своя метка
- потом подсчитывать по каждой метке колич. пакетов за определенной время
- потом уже записать в лог информацию кто и откуда льет трафикНо как это реализовать с помощью правил не знаю. Может, кто что подскажет?
Буду благодарен :)
p.s.
Если с помощью IPtables это сделать нельзя, то, может быть, подскажете, какие другие варианты возможны?
Иптабли тут не очень помогут. Если костылять на коленке, то можно смотреть заголовки пакетов tcpdump'ом и считать в них айпишники awk'ом.
> Если с помощью IPtables это сделать нельзя, то, может быть, подскажете, какие
> другие варианты возможны?Для dd-wrt есть пакет iftop.
В Tomato функция IP-Traffic доступна через WebUI, просто кликни галочку.
> - Роутер DIR300...
> Вопрос: можно ли с помощью правил в iptables как-то определить на какой
> Ну например, если трафик на какой-то хост более 1Мб/сек, то сделать запись
> в лог (чтобы в логе можно было
> p.s.
> Если с помощью IPtables это сделать нельзя, то, может быть, подскажете, какие
> другие варианты возможны?Другие варианты, один из, видимо, искать по слову netflow.
>[оверквотинг удален]
> - все пакеты с состоянием ESTABLISHED,RELATED как-то разделять: на каждый IP -
> своя метка
> - потом подсчитывать по каждой метке колич. пакетов за определенной время
> - потом уже записать в лог информацию кто и откуда льет трафик
> Но как это реализовать с помощью правил не знаю. Может, кто что
> подскажет?
> Буду благодарен :)
> p.s.
> Если с помощью IPtables это сделать нельзя, то, может быть, подскажете, какие
> другие варианты возможны?Мегабиты в ИПтаблзе - нельзя, а вот Пакеты в секунду можно, вот только умеет ли это iptables в dd-wrt незнаю.
Гуглить не пробовали?
> Гуглить не пробовали?
> https://catonmat.net/traffic-accounting-with-iptablesЯ эту статью уже давно читал и она мне во многом помогла когда-то. Но моего вопроса, открытого в данной теме, она не решает.
>> Гуглить не пробовали?
>> https://catonmat.net/traffic-accounting-with-iptables
> Я эту статью уже давно читал и она мне во многом помогла
> когда-то. Но моего вопроса, открытого в данной теме, она не решает.Там все, что касается iptables и извлечение данных из его счетчиков.
Далее всего-то надо скрипт в крон, который раз в минуту будет брать эти счетчики, анализировать и тут же обнулять. Это вам как раз даст среднюю загрузку канала, измеренную за минуту. Лог системный.
> p.s.
> Если с помощью IPtables это сделать нельзя, то, может быть, подскажете, какие
> другие варианты возможны?Если вам не столько для "ограничить", сколько для "посмотреть", то я это решал с помощью pmacct. На "большом" софтовом роутере на x86 с "большим" Линуксом.
Говорят, pmacct на OpenWRT портировали:
https://www.mail-archive.com/pmacct-discussion@pmacct.n...
В случае с DIR300, хранение и обработку придётся вести на внешнем устройстве, у этого ресурсов маловато.
https://openwrt.org/toh/hwdata/d-link/d-link_dir-300_b1
вы на прикеоле короче походу
Роутер DIR300
вы совсем? разбейте его молотком
нечего тебе не поможет>[оверквотинг удален]
> - все пакеты с состоянием ESTABLISHED,RELATED как-то разделять: на каждый IP -
> своя метка
> - потом подсчитывать по каждой метке колич. пакетов за определенной время
> - потом уже записать в лог информацию кто и откуда льет трафик
> Но как это реализовать с помощью правил не знаю. Может, кто что
> подскажет?
> Буду благодарен :)
> p.s.
> Если с помощью IPtables это сделать нельзя, то, может быть, подскажете, какие
> другие варианты возможны?