Биллинговая система Nodeny
23 Ноября 2024, 12:30:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: 1 [2]
  Печать  
Автор Тема: Ограничение кол-ва tcp-сессий  (Прочитано 15780 раз)
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #15 : 21 Июня 2010, 11:29:37 »

1.получается нужно играться с таблице 0?

2. то есть ты думешь что строка 05004 skipto (??? на следующую?) ip from table(0) to any setup limit src-addr 100 в принципе может работать?

за net.inet.ip.fw.one_pass спасибо, пороюсь

может у кого есть желание сделать такое ограничение за вознаграждение?:-)

0. В дополнительных опциях отправки сообщения (форума) есть параметр "не использовать смайлы"

1. Вообще не нужно играться ни с какой таблицей, фильтровка по таблице 0 происходит ранее. Иные таблицы нужны для того чтобы брать из них номера пайпов

2. Скорее всего будет работать. Ну ессно таблица 0 там не нужна, я об этом грил. Другой вопрос, что  ты должен понимать как работает Limit. Для этого нужно знать что такое временные правила Ipfw. Если коротко, то некоторые конструкции создают временные, как бы виртуальные, правила, которые исполняются при check-state. Короче, читай доки, влом тут расписывать, но без понимания, ты правильно правила не напишешь

3. net.inet.ip.fw.one_pass пока не спеши юзать, это накрайняк, когда уже ничего не получится
Записан
label
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 7


Просмотр профиля
« Ответ #16 : 23 Июня 2010, 11:28:22 »

короче сделал так, если кому надо:
решил все это дело в pf сделать. вот конф
pf.conf
set limit states 128000
set optimization aggressive

table <all_ips> persist file "/etc/all.pf"

nat pass on em0 from 10.0.0.0/8 to any -> em0
nat pass on em0 from 192.168.0.0/16 to any -> em0
pass in on em1 proto tcp from any to 192.168.6.1 port 22 no state
pass in quick from <all_ips> to any keep state (source-track rule, max-src-states 300) # 300 сессий

таблица all.pf
10.10.0.0/16
192.168.0.0/16

это сетки с которых у меня люди ходят в инет( серые и vpn)

теперь проблема в том что бы в этот файлик вытащить ip безлимитчиков. может кто подскажет?
нужно сделать скрипт который из базы вытаскивает всех безлимитчиков и с какой то периодичностью записывает  их ip в файлик all.pf
Записан
goletsa
NoDeny
Спец
*

Карма: 21
Offline Offline

Сообщений: 973


Просмотр профиля
« Ответ #17 : 23 Июня 2010, 13:09:56 »

А чем вам nomake не угодил для генерации списка ипов?
Отфильтровать только по нужным критериям.
Записан
label
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 7


Просмотр профиля
« Ответ #18 : 23 Июня 2010, 16:06:18 »

nomake.pl не работает с колонкой paket. а именно из нее в таблице users берется тариф на котором сидит индивидум

В качестве тегов, указывающих на данные клиента, nomake воспринимает:


ip     - ip адрес;
login     - логин;
lat_login - логин, сконвертированный в латиницу;
pass     - пароль;
state     - состояние доступа (on/off);
auth     - режим авторизации (no/on/ong/off/1/2/3...).

вот
Записан
goletsa
NoDeny
Спец
*

Карма: 21
Offline Offline

Сообщений: 973


Просмотр профиля
« Ответ #19 : 23 Июня 2010, 18:14:57 »

Небольшая правка скрипта исправляет этот недостаток:
Код:
# cat paket.diff 
--- nomake.pl 2009-10-09 14:34:17.000000000 +0400
+++ nomake-paket.pl 2010-06-23 20:10:54.000000000 +0400
@@ -151,7 +151,7 @@
 sub Form_Config
 {
  $When_Form_Config=&TimeNow()+$t_reload_users;
- $sql="$SQL_BUF id,ip,name,state,auth,AES_DECRYPT(passwd,'$Passwd_Key') FROM $c{Db_usr_table} $Where_grp ORDER BY id";
+ $sql="$SQL_BUF id,ip,name,state,auth,AES_DECRYPT(passwd,'$Passwd_Key'),paket FROM $c{Db_usr_table} $Where_grp ORDER BY id";
  $sth=&sql($sql);
  $sth or return;
 
@@ -161,16 +161,17 @@
     @out[$_]=$b[$_]->[1] unless $b[$_]->[0];
  }
  $ok=0;
- while ($p=$sth->fetchrow_hashref)
+ while( $p=$sth->fetchrow_hashref )
  {
     $ok++;
-    %f=( 'id'=>$p->{id}, 'ip'=>$p->{ip}, 'state'=>$p->{state}, 'auth'=>$p->{auth} );
+    %f=( 'id'=>$p->{id}, 'ip'=>$p->{ip}, 'state'=>$p->{state}, 'auth'=>$p->{auth} , 'paket'=>$p->{paket} );
     $ip_raw=pack('CCCC', split /\./,$f{ip});
     $f{login}=$p->{name};
-    &Debug("=== id: $f{id} === $f{ip} === $f{login} ===");
+    &Debug("=== id: $f{id} === $f{ip} === $f{login} === ");
     $f{pass}=$p->{"AES_DECRYPT(passwd,'$Passwd_Key')"};
     $f{lat_login}=&translit($f{login});

     $sql="SELECT field_alias,field_value FROM dopdata ".
          "WHERE parent_type=0 AND template_num=$Template_num AND parent_id=$f{id} AND revision=".
          "(SELECT MAX(revision) FROM dopdata WHERE parent_type=0 AND template_num=$Template_num AND parent_id=$f{id})";

« Последнее редактирование: 23 Июня 2010, 18:17:05 от goletsa » Записан
Gosha
Постоялец
***

Карма: 7
Offline Offline

Сообщений: 199


Просмотр профиля
« Ответ #20 : 21 Декабря 2010, 17:26:39 »

Уважаемые. Cоздал дополнительное поле  в доп. данных по аналогии с "открыть 25 порт". Алиас _nat (да/нет). Как выбрать клиентов у которых "да" и через nomake.pl создать файл all.pf с ихними IP.
Это для клиентов , которые подозреваются в раздаче инета соседям .
Записан
Страниц: 1 [2]
  Печать  
 
Перейти в:  

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