freeBSD+ipfw

Технические вопросы по UTM 5.0
momai
Сообщения: 9
Зарегистрирован: Пн окт 29, 2012 09:41

freeBSD+ipfw

Сообщение momai »

Привет всем. Да, знаю, что этот вопрос часто обсуждали здесь, но честно говоря, порыскав по темам, по поиску и по документации ни чего стоящего не нашёл. Разве что отсылки в гугл или в поиск по форуму, в подобных обсуждаемых темах. Везде разрозненная информация и общую картину понять довольно проблематично. Потому прошу проявить немного терпения и миролюбия и пояснить, что я делаю не так.

Имеется freebsd 8.3 x86. Настроен нат, инетик через локалку работает.
Вся проблема в том, как подружить utm5 c системой.

В rc.conf

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

gateway_enable="YES"
defaultrouter="192.168.1.1" (выход на внеху)
dummynet_enable="YES"
firewall_enable="YES"
в /etc/sysctl.conf

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

net.inet.ip.fw.one_pass=1
(и да, похоже в rc.conf присутствуют лишние параметры, не пойму пока какие)

UTM5 установил без особых проблем, бд подцепилась, админ панель работает.

В rfw5.cfg

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

rfw_name=ipfw
core_host=127.0.0.1
core_port=12758
rfw_login=init
rfw_password=****
firewall_path=/sbin/ipfw
sudo_path=/usr/local/bin/sudo
Так же установлен sudo
в /usr/local/etc/sudoers

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

init ALL= NOPASSWD: /sbin/ipfw
Заведён пользователь init с таким же паролем как в конфиге rfw5.cfg

В админке в "Список брандмауэров" добавлен
тип локальный
Наименование ipfw
IP 127.0.0.1
Логин init

В правилах фв добавил 2 правила
включение инета:
add RULE_ID allow all from any to UIP/UBITS
(ID, имя группы и тариф 0)
выключение инета
delete RULE_ID
(ID, имя группы и тариф 0)

Завёл юзера тариф и тарифную связку, назначил для юзера ИП.
Отключение и включение инета на абонента не работает. Трафик тоже не считает. Куда копать?

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

1) RFW работает из-под рута? Если да, sudo там ни к чему.
2) Чтобы трафик считался, нужно сначала поставить на то место, где он должен считаться, netflow сенсор и настроить отправку информации на ядро биллинга, а в самом биллинге настроить правильно классы трафика, прописать его стоимость, завести тарифы, пользователей, чтоб он знал, кому считать, когда и сколько.

momai
Сообщения: 9
Зарегистрирован: Пн окт 29, 2012 09:41

Сообщение momai »

Да, rfw работает от рута пока что. Пока строку закомментил.
И ещё не идёт речи о трафиках. Не получается подружить ipfw с нетапом, включение отключение юзеров не пашет.
Вот что в дебаге:

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

 Oct 30 01:55:44 PluginManagerImpl: Got AffectorsPlugin plugin for event EventExecFWRule/4
?Debug &#58; Oct 30 01&#58;55&#58;44 AffectorsPlugin&#58; firewall <fw@127.0.0.1> not connected, rule <add 5001 allow all from any to 172.16.0.3/32> not executed
это при попытке включить инет

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

?Debug &#58; Oct 30 02&#58;01&#58;07 AffectorsPlugin&#58; firewall <fw@127.0.0.1> not connected, rule <delete 5001> not executed
это при попытке выключить.

momai
Сообщения: 9
Зарегистрирован: Пн окт 29, 2012 09:41

Сообщение momai »

Добавил папаметр -q в начало правил фв
-q add RULE_ID allow all from any to UIP/UBITS и
-q delete RULE_ID

Теперь в логе debug пишет
?Debug : Oct 30 02:22:26 FW@127.0.0.1: Sending [-q add 5001 allow all from any to 172.16.0.3/32]

но ничего не происходит

kirush
Сообщения: 699
Зарегистрирован: Пт фев 04, 2005 13:58

Сообщение kirush »

Так вроде ясно пишет что utm5_rfw не запущен.

momai
Сообщения: 9
Зарегистрирован: Пн окт 29, 2012 09:41

Сообщение momai »

kirush писал(а):Так вроде ясно пишет что utm5_rfw не запущен.
Да, в тот раз действительно он был не запущен, пропустил как-то.
А вот теперь не очень всё понятно...
В логах то что писал в последнем посте

?Debug : Oct 30 02:22:26 FW@127.0.0.1: Sending [-q add 5001 allow all from any to 172.16.0.3/32]
Однако в правилах фв ни чего не появляется.

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

У RFW есть свой лог, гляньте его.

momai
Сообщения: 9
Зарегистрирован: Пн окт 29, 2012 09:41

Сообщение momai »

JAO писал(а):У RFW есть свой лог, гляньте его.
Да, глянул лог, оказалось у файла брандмауэра недостаточно прав было. Поправил всё стартануло.
Но возникла следующая проблема. Пользователи без труда включаются, выключаются, правила добавляются и удаляются, но совершенно не понятна природа назначения ID по параметру RULE_ID

Покажу на живом примере.
re0- внеха
re1 - локалка

Правила ipfw когда все юзеры выключены
00100 1438 104910 allow ip from any to any via lo0
00100 32013 8988331 nat 1 ip from any to any via re0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
00400 0 0 deny ip from any to ::1
00500 0 0 deny ip from ::1 to any
00600 0 0 allow ipv6-icmp from :: to ff02::/16
00700 0 0 allow ipv6-icmp from fe80::/10 to fe80::/10
00800 0 0 allow ipv6-icmp from fe80::/10 to ff02::/16
00900 0 0 allow ipv6-icmp from any to any ip6 icmp6types 1
01000 0 0 allow ipv6-icmp from any to any ip6 icmp6types 2,135,136
01100 9607 2308447 allow ip from 172.16.0.0/24 to any via re1
65535 10 492 deny ip from any to any
Включаем однго юзера с ип 172.16.0.3 по правилам
add RULE_ID allow all from any to UIP/UBITS via re1
add RULE_ID pipe RULE_ID tcp from any to UIP out
pipe RULE_ID config bw 120kb
00100 1466 107050 allow ip from any to any via lo0
00100 32118 8998381 nat 1 ip from any to any via re0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
00400 0 0 deny ip from any to ::1
00500 0 0 deny ip from ::1 to any
00600 0 0 allow ipv6-icmp from :: to ff02::/16
00700 0 0 allow ipv6-icmp from fe80::/10 to fe80::/10
00800 0 0 allow ipv6-icmp from fe80::/10 to ff02::/16
00900 0 0 allow ipv6-icmp from any to any ip6 icmp6types 1
01000 0 0 allow ipv6-icmp from any to any ip6 icmp6types 2,135,136
01100 9607 2308447 allow ip from 172.16.0.0/24 to any via re1
05001 0 0 allow ip from any to 172.16.0.3 via re1
05001 0 0 pipe 5001 tcp from any to 172.16.0.3 out

65535 10 492 deny ip from any to any
И видим что скорость конечно не режется, т.к. правило pipe 5001 tcp from any to 172.16.0.3 out должно стоять на 1 уровень выше.

Если ручками поднять это правило выше, скорость начинает шейпериться.
Не ясно как RULE_ID определяет что ему выбрать и как его подружить с ipfw

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

pipe не стоит создавать на ходу, лучше сделать их один раз динамическими с маской и потом заворачивать в них сколь угодно адресов из подсети.

Аватара пользователя
hellard
Сообщения: 52
Зарегистрирован: Вт апр 05, 2005 05:59
Откуда: Абакан
Контактная информация:

Сообщение hellard »

Добавлю от себя немного.

RFW штука глючная, и мало съедобная.

сколько у вас сейчас хомяков, 10-50-100? А когда их станет несколько сотен, вы подумали о нагрузке на шейпер?

Оптимизируйте сразу файервол под работу с таблицами, и дергайте скорости, адреса и сетки сами из базы напрямую.

Скриптик пишется за пару часов с перерывом на кофе.

зы. полтыщи абонентов при старте RFW вам будет включать минут 10-30, зависит конечно от железа вашего шейпера. При этом загрузите CPU вашего роутера до 100%. да так что SSH у вас откликаться перестанет. а с помощью самописнго скрипта и раскладки по таблам, пара тыщ абонентов добавится менее чем за секунду.

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

Откликается. И включает довольно шустро, несмотря на dont_fork=yes. И процессор не загружает на сто. И ssh откликается. Это как запустить, без dont_fork=yes у меня одна машинка в панику улетала.

momai
Сообщения: 9
Зарегистрирован: Пн окт 29, 2012 09:41

Сообщение momai »

Сделал теперь так
В ipfw при старте добавляется:
pipe 1 config bw 110Kbit/s
pipe 2 config bw 110Kbit/s
allow ip from 172.16.0.0/24 to any via re1
queue 1 config pipe 1 mask dst-ip 0xffffffff
queue 2 config pipe 2 mask src-ip 0xffffffff

А при включении юзера, из нетап добавляются следующие правила:

queue 1 ip from any to 172.16.0.3
queue 2 ip from 172.16.0.3 to any

Я так понимаю, это оптимальный вариант будет?
hellard спасибо, но сеть не будет рассчитана на тысячи абонов (думаю 500-700 потолок), хотя не откажусь от указки, что хорошо бы изменить.


И ещё такая беда, не считается трафик. Да, да, баян-проблема, но тем не мение.
Добавил юзера test c IP 172.16.0.3 и маской 255.255.255.255 (NetFlow на лок. машине)
Поправил классы трафика, теперь Incoming, источник - все по нулям, адресат - 172.16.0.0 255.255.0.0 Outgoing, источник 172.16.0.0 255.255.0.0 адресат, все по нулям.

Прилагаю скрины (кликабельны)
Изображение Изображение Изображение
Последний раз редактировалось momai Ср ноя 14, 2012 13:06, всего редактировалось 4 раза.

dk
Сообщения: 424
Зарегистрирован: Чт авг 10, 2006 08:52

Сообщение dk »

при старте в нужное место

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

queue tablearg ip from any to table&#40;0&#41;
queue tablearg ip from table&#40;1&#41; to any
и при включении

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

table 0 add 1.2.3.4/32 1
table 1 add 1.2.3.4/32 2
Нетфлоу точно отправляется? посмотрите в /netup/utm5/db

momai
Сообщения: 9
Зарегистрирован: Пн окт 29, 2012 09:41

Сообщение momai »

dk писал(а): Нетфлоу точно отправляется? посмотрите в /netup/utm5/db
в /netup/utm5/db пусто :?
Это очень плохо?

В utm5.cfg

nfbuffer_host=0.0.0.0
nfbuffer_port=9996

В логе

TrafficAggregator: failed to open NetUP Classifier Traffic File </netup/utm5/db/traffic.dat

В логе дебага

?Debug : Nov 15 21:29:41 292b6c40 TrafficPrimaryAggregator: primary classification loop started
?Debug : Nov 15 21:29:41 292b6d80 TrafficAggregator: scheduler started
?Debug : Nov 15 21:29:41 28b01140 TrafficAggregator: loaded <0> records from NetUP Classifier Traffic File </netup/utm5/db/traffic.dat>

Решил создать файл ручками, после рестарта нетап его и потёр походу.

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

Его не надо создавать. Этот файл создается ядром UTM при остановке и в него сбрасывается остаток необработанных данных, которые дожевываются при следующем его старте.

Ответить