Биллинговая система Nodeny
28 Сентября 2024, 20:15:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: stateless VS stateful firewall + help  (Прочитано 6241 раз)
Inzevision
NoDeny
Пользователь
*

Карма: 3
Offline Offline

Сообщений: 59


Просмотр профиля Email
« : 05 Февраля 2012, 21:56:08 »

Ну был у меня фаер следующего вида
table 126 UA-IX
Код:
00010 count ip from not table(126) to any in via em0
00011 count ip from any to not table(126) out via em0
00012 count ip from table(126) to any in via em0
00013 count ip from any to table(126) out via em0
00050 allow tcp from any to me dst-port 22
00051 allow tcp from me 22 to any
00060 allow udp from table(36) 1024-65535 to me dst-port 69 in #tftp
00061 allow udp from me 1024-65535 to table(36) dst-port 1024-65535 out
00062 allow udp from table(36) 1024-65535 to me dst-port 1024-65535 in
00100 deny tcp from any to any dst-port 445,137-138
00110 allow ip from any to any via lo0
00120 skipto 1000 ip from me to any
00130 deny icmp from any to me in icmptypes 5,9,13,14,15,16,17
00140 deny ip from any to table(119) #хер знает зачем, не помню
00150 deny ip from table(119) to any
00160 skipto 2000 ip from any to me
00200 skipto 500 ip from any to any via em0
00270 deny tcp from not table(0) to 90.183.101.0/24
00280 fwd 127.0.0.1,81 tcp from table(35) to not me dst-port 80
00282 fwd 127.0.0.1,8082 tcp from table(40) to not me dst-port 80 in
00285 skipto 291 ip from not <my local net> to not me dst-port 80 #пропускает на сайт из инета
00290 fwd 127.0.0.1,8081 tcp from not table(0) to not me dst-port 80
00300 skipto 4500 ip from any to any in
00390 setfib 1 ip from 192.168.0.0/16,10.0.0.0/8 to any in #для второго канала, сейчас не использую
00400 skipto 450 ip from any to any recv em0
00450 tee 2 ip from any to any
00490 allow ip from any to any
00500 skipto 32500 ip from any to any in
00510 tee 1 ip from any to any
00540 allow ip from any to any
01000 allow udp from any 53,7723 to any
01010 allow tcp from any to any setup keep-state
01020 allow udp from any to any keep-state
01100 allow ip from any to any
02000 check-state
02010 allow icmp from any to any
02020 allow tcp from any to any dst-port 80,443
02050 deny ip from any to any via em0
02060 allow udp from any to any dst-port 53,7723
02100 deny ip from any to any
05000 deny ip from not table(0) to any
05001 skipto 5010 ip from table(127) to table(126)
05002 skipto 5030 ip from any to not table(2)
05003 deny ip from any to not table(1)
05004 allow ip from table(21) to any
05005 deny ip from any to any
05010 allow ip from table(127) to any
05030 deny tcp from table(15) to any dst-port 25
05226 allow ip from table(127) to table(126)
05400 allow ip from table(11) to any
32000 deny ip from any to any
32490 deny ip from any to any
33000 allow ip from table(126) to table(127)
33001 skipto 33010 ip from not table(2) to any
33002 allow ip from any to table(20)
33003 deny ip from any to any
33226 allow ip from table(126) to table(127)
33400 allow ip from any to table(10)
65535 deny ip from any to any

Не собственно с этим фаером пропускало не больше 400Мбит/сек + пинги на сервер порядка 10мс, ошибки на интерфейсах ну и общий тупняк. Загрузка с торрентов порядка 2-3МБ/сек. pps было не больше 60K.
 Прописал после счетчиков
Код:
00020 allow ip from table(0) to not me
00021 allow ip from not me to table(0)
Скорость выросла до 900Мбит/сек, пакеты выросли до 100Kpps. Загрузка с торрентов около 10МБ/сек

Сейчас фаер работает по принципу, сначала выпускаем всех, кто не заблокирован, а потом уже разбираем всё остальное.

Ну теперь к главному, насколько это "правильно"? И ещё, куда прописать ipcad правила? Насколько я понимаю, одно правило для входящих, одно для исходящих. Но вот какое из них какое?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4787



Просмотр профиля
« Ответ #1 : 06 Февраля 2012, 00:03:30 »

Код:
15 tee 1 ip from table(0) to not me out
16 tee 2 ip from not me to table(0) out

но это не будет корректно учитывать трафик между клиентами - хотя эта фича у 99% сетей не используется. Речь идет о ситуации, когда трафик между клиентами платный и нужно такие пакеты учитывать дважды: исходящий насчитывать клиенту источнику, а входящий - получателю. Все эти навороты с recv - как раз разруливают такую ситуацию.

Насчет "Ну теперь к главному, насколько это "правильно"?". В принципе, норм, но правило 100 уже бессмысленно - можно убрать.
Записан
Inzevision
NoDeny
Пользователь
*

Карма: 3
Offline Offline

Сообщений: 59


Просмотр профиля Email
« Ответ #2 : 06 Февраля 2012, 00:11:50 »

Ой дядька, спасибо. Как всегда с открытой душой подошел к вопросу. С меня пряник Улыбающийся
Трафик между клиентами рулит железка уровня 3 и надобности его считать нет.
Записан
Inzevision
NoDeny
Пользователь
*

Карма: 3
Offline Offline

Сообщений: 59


Просмотр профиля Email
« Ответ #3 : 21 Февраля 2012, 00:13:32 »

Обнаружил, что параметр tee невероятно заглючивает всё систему. Заменил на divert - всё стало на свои места.
Код:
FreeBSD stat.****.ua 8.2-RELEASE-p6 FreeBSD 8.2-RELEASE-p6 #0: Sun Feb  5 00:06:11 EET 2012     admin@stat.****.ua:/usr/src/sys/amd64/compile/NODENY2  amd64

[root@stat /home/admin]# ipfw list
00006 skipto 281 ip from table(40) to not me dst-port 80
00010 count ip from not table(126) to any in via em0
00011 count ip from any to not table(126) out via em0
00012 count ip from table(126) to any in via em0
00013 count ip from any to table(126) out via em0
00015 divert 1 ip from table(0) to not me out
00016 divert 2 ip from not me to table(0) out
00020 allow ip from table(0) to not me
00021 allow ip from not me to table(0)

00050 allow tcp from any to me dst-port 22
00051 allow tcp from me 22 to any
00060 allow udp from table(36) 1024-65535 to me dst-port 69 in
00061 allow udp from me 1024-65535 to table(36) dst-port 1024-65535 out
00062 allow udp from table(36) 1024-65535 to me dst-port 1024-65535 in
00100 deny tcp from any to any dst-port 445,137-138
00110 allow ip from any to any via lo0
00120 skipto 1000 ip from me to any
00130 deny icmp from any to me in icmptypes 5,9,13,14,15,16,17
00140 deny ip from any to table(119)
00150 deny ip from table(119) to any
00160 skipto 2000 ip from any to me
00200 skipto 500 ip from any to any via em0
00270 deny tcp from not table(0) to 90.183.101.0/24
00280 fwd 127.0.0.1,81 tcp from table(35) to not me dst-port 80
00282 fwd 127.0.0.1,8082 tcp from table(40) to not me dst-port 80 in
00285 skipto 291 ip from not <client IPs> to not me dst-port 80
00290 fwd 127.0.0.1,8081 tcp from not table(0) to not me dst-port 80
00300 skipto 4500 ip from any to any in
00400 skipto 450 ip from any to any recv em0
00420 tee 1 ip from any to any
00450 tee 2 ip from any to any
00490 allow ip from any to any
00500 skipto 32500 ip from any to any in
00510 tee 1 ip from any to any
00540 allow ip from any to any
01000 allow udp from any 53,7723 to any
01010 allow tcp from any to any setup keep-state
01020 allow udp from any to any keep-state
01100 allow ip from any to any
02000 check-state
02010 allow icmp from any to any
02020 allow tcp from any to any dst-port 80,443
02050 deny ip from any to any via em0
02060 allow udp from any to any dst-port 53,7723
02100 deny ip from any to any
05000 deny ip from not table(0) to any
05001 skipto 5010 ip from table(127) to table(126)
05002 skipto 5030 ip from any to not table(2)
05003 deny ip from any to not table(1)
05004 allow ip from table(21) to any
05005 deny ip from any to any
05010 allow ip from table(127) to any
05030 deny tcp from table(15) to any dst-port 25
05226 allow ip from table(127) to table(126)
05400 allow ip from table(11) to any
32000 deny ip from any to any
32490 deny ip from any to any
33000 allow ip from table(126) to table(127)
33001 skipto 33010 ip from not table(2) to any
33002 allow ip from any to table(20)
33003 deny ip from any to any
33226 allow ip from table(126) to table(127)
33400 allow ip from any to table(10)
65535 deny ip from any to any
Записан
poxy.
NoDeny
Спец
*

Карма: 10
Offline Offline

Сообщений: 844



Просмотр профиля
« Ответ #4 : 21 Февраля 2012, 01:11:53 »

В чем именно проявились глюки?
PS у себя поменял, вроде нормально...
Записан
VitalVas
NoDeny
Спец
*

Карма: 60
Offline Offline

Сообщений: 991



Просмотр профиля WWW
« Ответ #5 : 21 Февраля 2012, 01:16:06 »

меняешь divert на tee в rc.firewall и ipcad.conf
и все хорошо работает Улыбающийся
Записан
Inzevision
NoDeny
Пользователь
*

Карма: 3
Offline Offline

Сообщений: 59


Просмотр профиля Email
« Ответ #6 : 21 Февраля 2012, 01:44:51 »

а-ааа... Семён Семёныч. Я про ipcad.conf совсем забыл. В букваре к биллингу этого не было, а у самого мозга не хватило проверить конфиг. Щас попробую с tee.
...
Поправил конфиг ipcad, презапустил, в ipfw прописал tee. Всё работает так же как и с divert.
С прискорбием осознаю - олень.
« Последнее редактирование: 21 Февраля 2012, 01:51:51 от Inzevision » Записан
Demeo
NoDeny
Постоялец
*

Карма: 6
Offline Offline

Сообщений: 204


Просмотр профиля Email
« Ответ #7 : 21 Февраля 2012, 10:53:31 »

Если не используется подсчет трафика, то просто нужно добавить первыми два разрешающих правила для 0 таблицы?
Записан
Inzevision
NoDeny
Пользователь
*

Карма: 3
Offline Offline

Сообщений: 59


Просмотр профиля Email
« Ответ #8 : 21 Февраля 2012, 22:30:24 »

Я тоже не использую подсчет трафика, так как все на безлимитках. Это всё ради того, что бы в статистике показывалась загрузка канала пользователями.
Походу да, думаю так логичнее. Сначала выпустить всех, кому доступ в инет не запрещён, а потом разбирать запросы, которые пользователи отправляют самому серверу.
Записан
Demeo
NoDeny
Постоялец
*

Карма: 6
Offline Offline

Сообщений: 204


Просмотр профиля Email
« Ответ #9 : 21 Февраля 2012, 23:10:41 »

Хм. Попробовал....

Добавил к

Код:
00050 allow tcp from any to me dst-port 22
00051 allow tcp from me 22 to any
00052 allow udp from any to me dst-port 53
00053 allow udp from me 53 to any
00062 allow ip from me 1812 to any
00063 allow ip from me 1813 to any
00064 allow ip from any to me dst-port 1812
00065 allow ip from any to me dst-port 1813
00100 deny tcp from any to any dst-port 445
00110 allow ip from any to any via lo0
00120 skipto 1000 ip from me to any
00130 deny log icmp from any to any in icmptypes 5,9,13,14,15,16,17
00140 deny ip from any to table(120)
00150 deny ip from table(120) to any
00160 skipto 2000 ip from any to me
00200 skipto 500 ip from any to any via igb0
00300 skipto 4500 ip from any to any in
00400 skipto 450 ip from any to any recv igb0
00490 allow ip from any to any
00500 skipto 32500 ip from any to any in
00540 allow ip from any to any
01000 allow udp from any 53,7723 to any
01010 allow tcp from any to any setup keep-state
01020 allow udp from any to any keep-state
01100 allow ip from any to any
02000 check-state
02010 allow log icmp from any to any
02020 allow tcp from any to any dst-port 80,443,8085,9740
02021 allow tcp from any to any dst-port 8081,8082
02050 deny ip from any to any via igb0
02060 allow udp from any to any dst-port 53,7723
02100 deny ip from any to any
05000 deny ip from not table(0) to any
05001 skipto 5010 ip from table(127) to table(126)
05002 skipto 5030 ip from any to not table(2)
05003 deny ip from any to not table(1)
05004 pipe tablearg ip from table(21) to any
05005 deny ip from any to any
05010 pipe tablearg ip from table(127) to any
05030 deny tcp from table(15) to any dst-port 25
05400 pipe tablearg ip from table(11) to any
32000 deny ip from any to any
32490 deny ip from any to any
33000 pipe tablearg ip from table(126) to table(127)
33001 skipto 33010 ip from not table(2) to any
33002 pipe tablearg ip from any to table(20)
33003 deny ip from any to any
33400 pipe tablearg ip from any to table(10)
65535 deny ip from any to any

ipfw add 20 allow ip from "table(0)" to not me
ipfw add 21 allow ip from not me to "table(0)"

Загрузка канала улетела на полку, pps почти в 2 раза увеличился и по ходу шейпер перестал работать. Нагрузка на проц где-то процентов на 10 увеличилась.

Я чего-то не догоняю или в данном случае на каком-то правиле надо остановиться (skipto)?
« Последнее редактирование: 21 Февраля 2012, 23:13:44 от Demeo » Записан
Inzevision
NoDeny
Пользователь
*

Карма: 3
Offline Offline

Сообщений: 59


Просмотр профиля Email
« Ответ #10 : 25 Февраля 2012, 23:19:04 »

ну всё правильно, вы разрешили всем абонентам выходить в инет без всяких шейперов и т.п. То есть, если абонент оплатил инет и доступ у него не заблокирован, он в таблице 0. Правила проходятся по очереди. Если правило allow|pass и переменная sysctrl (как то там про фаер one.pass = 1) то пакет выходит из фаера и дальнейшие правила не просматриваются. Получается, что до ваших шейперов данные не доходят. Если у вас всё стабильно работает, не нарушайте первое правило админа - "Работает - не трогай!". В моём случае, у меня работало коряво. шейперы я не использую, поэтому я всех не заблокированных  абонентов выпустил в инет. Если абонент хочет получить доступ к сервисам сервера, он проходит все правила моего фаера до совпадения.
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!