Страница 1 из 1

ipfw table

Добавлено: 2009-02-25 18:40:46
Burn_
День добрый.
Столкнулся с такой проблемой: на шлюзе под FreeBSD, разрешаю ходить в Интернет только тем кто есть в "table 1", ip в таблицу добавляются/убираются биллингом, все работает хорошо, но было пара сбоев, ip юзера в "table 1" нет, а ipfw его пропускает, причем пускает не только его, а всех. После очистки таблицы биллинг заполнил ее снова, список стал аналогичным тому что был до очистки, но в Интернет могут идти только те что есть в "table 1", как собственно и должно быть :) .
Аналогичный сбой был примерно неделю назад, одно из первых правил запрещало ходить с/на тех кто в "table 2" (СПАМеры, ФЛУДер'асты и т.п.), в один прекрасный момент ipfw стал пропускать всех юзеров в Интернет :( , помогла чистка "table 2" .
Сделал вывод, что если записать большое кол-во (~1500-2000) ip в таблицы - правила в ipfw срабатывают в независимости от содержания таблиц :(
Может ошибаюсь, но пока других объяснений не вижу.
Помогите разобраться, юзеров в сети все больше не выделять же на каждую 1000 по серверу....

Код: Выделить всё

# uname -a
FreeBSD zenon 7.1-PRERELEASE FreeBSD 7.1-PRERELEASE #1: Wed Dec 17 21:55:37 NOVT 2008     root@zenon:/usr/obj/usr/src/sys/ZENON.2008-12-05  i386

Re: ipfw table

Добавлено: 2009-02-25 20:14:29
godlike

Код: Выделить всё

#ipfw list
в студию.

Код: Выделить всё

deny ip from not table\(1\) to any in via ${gw_int} 
есть?

Re: ipfw table

Добавлено: 2009-02-25 21:07:06
snorlov
Где-то читал о том, как увеличить буфер в ipfw, кажется где-то на opennet.ru поищи там...

Re: ipfw table

Добавлено: 2009-02-26 0:22:42
hizel
я бы для начала до RELEASE обновиля :unknown:

Re: ipfw table

Добавлено: 2009-02-26 2:02:36
zingel
не нужно на опеннете ничего искать, поищите по-форуму, я даже diff давал как запас под очередь сделать больше

Re: ipfw table

Добавлено: 2009-02-26 8:26:05
manefesto
а PR писал ?

Re: ipfw table

Добавлено: 2009-02-26 8:35:34
zingel
пока до них дойдёт.....я для души, а не для pr....тем более для себя.

Re: ipfw table

Добавлено: 2009-02-26 10:55:41
snorlov
Подумаешь, что долго будет доходить, сам то можешь забыть, а вспоминать это бывает так трудно...

Re: ipfw table

Добавлено: 2009-02-26 11:41:00
Burn_
Не на форуме не в google не нашел как запас под очередь сделать больше.
Обновлять мир не хотел, т.к. возможно возникнут другие проблемы, а оставлять пару тысяч юзеров без Интернета не есть гуд. :(
В данный момент поставил обновлять....
Еще грешу на архитектуру, т.к. из-за особенности биллинга пришлось ставить 32-х битную, а процессор 64-х битный.

Код: Выделить всё

$ dmesg | grep CPU:
CPU: Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz (2006.98-MHz K8-class CPU)

Re: ipfw table

Добавлено: 2009-02-26 11:44:22
zingel
непричем тут архитектура, хоть так делать и не нужно, дело в ipfw

Re: ipfw table

Добавлено: 2009-02-26 15:21:40
Burn_
zingel писал(а):непричем тут архитектура, хоть так делать и не нужно, дело в ipfw
знаю что не нужно, но вставать не хотела, а времени разбираться не было - пришлось... поздней на другой машине всё поставил на 64-ю, но эту трогать не стал...
Обновил мир, пять минут - полёт нормальный, помогло/нет увидим....
Все таки хотелось бы узнать есть ли ограничения на кол-во ip в таблицах.

Re: ipfw table

Добавлено: 2009-03-06 12:10:44
Burn_
Обновил мир до СТАБЛЕ

Код: Выделить всё

FreeBSD zenon 7.1-STABLE FreeBSD 7.1-STABLE #3: Thu Mar  5 22:22:58 NOVT 2009     root@zenon:/usr/obj/usr/src/sys/ZENON.2008-12-05  i386
Не помогло :(
В табле1 около 980 ip , есть ещё парочка таблиц в них около 300-500 ip.
Ситуация повторилась: ip в таблице нет, а правило по нему срабатывает, проверял ЛОГированием

Код: Выделить всё

1100 skipto 1900 log logamount 10000 ip from table(1) to any out via vlan97
при удаление из таблице - пишет что нет его
добавляю затем удаляю - все ровно правило срабатывает
после флуша перестало

Сейчас увеличил буфер:

Код: Выделить всё

net.inet.ip.dummynet.hash_size=1024
net.inet.ip.dummynet.max_chain_len=32
Поможет, нет отпишусь....

Re: ipfw table

Добавлено: 2009-03-07 9:38:30
Burn_
Увеличение буфера не помогло :(
Как временное решение - буду уменьшать кол-во ip в табле1....

Re: ipfw table

Добавлено: 2009-05-30 17:49:06
Burn_
Подобную проблему нашел в PR :
http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/127209

У себя решил проблему написанием скрипта для биллинга который не допускает заполнений таблиц боле чем на 300 записей.

Re: ipfw table

Добавлено: 2009-05-30 17:54:26
paradox
кто то показывал какую константу нужно менять в ядре и пересобирать
если вы про лимит таблицы

Re: ipfw table

Добавлено: 2009-05-30 21:16:46
Burn_
Дело не в лимите. При "большом" потоке Интернет трафика и "больших" таблиц - правила с table срабатывают независимо от ip в таблице, т.е. таблицу можно даже очистить, а правило будет срабатывать. Точную зависимость от трафика и кол-ва ip в таблице не вычислял, т.к. сервера обслуживают пару тысяч клиентов. Если память не изменяет, при трафике примерно до 20Mb/s и кол-ва ip > 5000 - проблем не было , но при трафике больше 40Mb/s и кол-ва ip > 1400 - таблицы "сглючивают".

Re: ipfw table

Добавлено: 2009-05-31 15:03:20
buryanov
Может попробовать увеличить параметр IPFW_TABLES_MAX в файле /usr/src/sys/netinet/ip_fw.h и перекомпилить ядро, то возможно это поможет Вам, хотя неуверен, он отвечает за колличество таблиц

Re: ipfw table

Добавлено: 2009-05-31 15:40:38
Burn_
buryanov писал(а):Может попробовать увеличить параметр IPFW_TABLES_MAX в файле /usr/src/sys/netinet/ip_fw.h и перекомпилить ядро, то возможно это поможет Вам, хотя неуверен, он отвечает за колличество таблиц
Это БАГ - его нужно исправлять. Увеличение каких либо лимитов, думаю, не поможет.

Re: ipfw table

Добавлено: 2009-05-31 17:30:34
qwe
Когда возникнет проблема, покажите, пожалуйста,
ipfw table 1 list | grep -v "/32"

или

ipfw table 1 list | grep -v 32

Re: ipfw table

Добавлено: 2009-06-02 18:22:49
Burn_
qwe писал(а):Когда возникнет проблема, покажите, пожалуйста,
ipfw table 1 list | grep -v "/32"

или

ipfw table 1 list | grep -v 32
Сейчас проблемы нет, т.к. не допускаю больших таблиц. Специально ломать не буду, т.к. сервер обслуживает более 2000 клиентов...
Во время выяснения причины просматривал маски - больше /27 не было , были только те, что должны были быть.