Лимит по траффику...
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- northern
- лейтенант
- Сообщения: 778
- Зарегистрирован: 2006-02-08 20:48:45
- Откуда: Днепропетровск
- Контактная информация:
вот оттестил дома, пока всё подтверждается, при one_pass=1:работает, сбрасываю в 0 - работает deny.
Код: Выделить всё
${FwCMD} add pipe 2 ip from any to any in via ${LanOut}
${FwCMD} add pipe 2 ip from any to any out via ${LanOut}
${FwCMD} pipe 2 config bw 260Kbit/s
${FwCMD} add 900 deny log ip from any to any
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- northern
- лейтенант
- Сообщения: 778
- Зарегистрирован: 2006-02-08 20:48:45
- Откуда: Днепропетровск
- Контактная информация:
не всё сразу , до диверта вчера руки не дошли, сегодня поразбираюсь...
Смотри чё в мане:
Смотри чё в мане:
на работе на своём 486, я разбирался со squidом, пример для ipfw твой, а там стоит fwd на локальный адрес, поэтому вчера у меня при one_pass=1 пакеты после fwd не уходили из ipfw. С дивертом надо разобраться.
divert порт
Перенаправляет пакеты, соответствующие правилу, на сокет
divert(4), связанный с указанным портом. Дальнейший поиск
прекращается.
tee порт
Посылает копию пакетов, соответствующих правилу, на сокет
divert(4), связанный с указанным портом. Дальнейший поиск
прекращается и исходный пакет принимается (см., однако,
раздел ОШИБКИ далее).
fwd ip-адрес[,порт]
Изменяет следующий переход (next-hop) для соответствующих
пакетов, направляя их по указанному ip-адресу, который
можно задавать либо в виде четверки чисел через точку,
либо по имени хоста. Если ip-адрес непосредственно не
доступен, вместо него используется соответствующий
маршрут, полученный по локальной таблице маршрутизации.
Если ip-адрес - локальный, при поступлении в систему
пакета с удаленного хоста он будет перенаправлен на
заданный порт на локальной машине, так что локальный
адрес сокета остается установленным в соответствии с
исходным IP-адресом, по которому направлялся пакет. Это
действие предназначено для использования в прозрачных
промежуточных серверах. Если IP-адрес - не локальный
дальнейший поиск прекращается; однако, при выходе из
канала если переменная sysctl( 8 ) net.inet.ip.fw.one_pass
не установлена, пакет снова передается брандмауэру для
проверки, начиная со следующего правила.
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- Urgor
- лейтенант
- Сообщения: 677
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
У тебя в конфиге прописано для всех:
А как прописать для одного ипа? Так чтобы пакеты в мир только с него уходили...
Так? Что-то пока доку читал совсем запутался
Код: Выделить всё
${FwCMD} add divert natd ip from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}
Код: Выделить всё
${FwCMD} add divert natd ip from 192.168.0.1 to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}
Власть в руках у чужаков, и ты им платишь дань...
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- Urgor
- лейтенант
- Сообщения: 677
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- Urgor
- лейтенант
- Сообщения: 677
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
От блин Рано обрадовался Нашелся странный косяк в sql'е...
Сделал две базы:
1. База хостов которым можно со ссылкой на вторую
2. База групп (отделов) где и лежит квота, начальник, адрес начальника...
Надо: выбрать ВСЕ хосты подтянув к ним квоту и суммарный инетный траффик.
Сделал две базы:
1. База хостов которым можно со ссылкой на вторую
2. База групп (отделов) где и лежит квота, начальник, адрес начальника...
Надо: выбрать ВСЕ хосты подтянув к ним квоту и суммарный инетный траффик.
Власть в руках у чужаков, и ты им платишь дань...
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- Urgor
- лейтенант
- Сообщения: 677
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
да, таблицам.. оговорился. Вот мои таблицы. К траффику добавил поле from_host которое связано с `hostallow`.`hostname`.
Можешь примерчик накидать?
Можешь примерчик накидать?
Код: Выделить всё
CREATE TABLE `groups` (
`idGroup` int(10) unsigned NOT NULL auto_increment,
`NameGroup` char(45) NOT NULL default '',
`quota` char(12) NOT NULL default '100000000',
`email` char(30) NOT NULL default '',
`boss` char(30) NOT NULL default '',
`step1` char(12) NOT NULL default '',
`mailed` char(1) NOT NULL default '0',
`traffic` char(12) NOT NULL default '0',
PRIMARY KEY (`idGroup`)
) TYPE=MyISAM;
CREATE TABLE `hostallow` (
`idHost` int(10) unsigned NOT NULL auto_increment,
`hostname` char(40) NOT NULL default '',
`idGroup` int(10) unsigned NOT NULL default '0',
`ttl` date NOT NULL default '0000-00-00',
`bps` char(12) NOT NULL default '64000',
`bps2` char(12) NOT NULL default '32000',
PRIMARY KEY (`idHost`)
) TYPE=MyISAM;
Власть в руках у чужаков, и ты им платишь дань...
- Urgor
- лейтенант
- Сообщения: 677
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Поясню:
Т.е. обе записи есть, а после добавления and from_IP NOT LIKE '192.168.0.%':
Почему вторая строка пропадает????????!
Код: Выделить всё
mysql> select to_ip, hostname, sum(allbytes) as allbytes,
-> NameGroup, quota
-> from hostallow
-> left join groups on `hostallow`.`idgroup` = `groups`.`idgroup`
-> left join xl0_2006 on to_host = hostname
-> where ttl > NOW()
-> group by to_host;
+--------------+--------------+----------+-----------+-----------+
| to_ip | hostname | allbytes | NameGroup | quota |
+--------------+--------------+----------+-----------+-----------+
| NULL | okid.kk.com | NULL | OKID | 104857600 |
| 192.168.0.37 | urgor.kk.com | 4519414 | ASU | 104857600 |
+--------------+--------------+----------+-----------+-----------+
2 rows in set (0.02 sec)
Код: Выделить всё
mysql> select to_ip, hostname, sum(allbytes) as allbytes,
-> NameGroup, quota
-> from hostallow
-> left join groups on `hostallow`.`idgroup` = `groups`.`idgroup`
-> left join xl0_2006 on to_host = hostname and from_IP NOT LIKE '192.168.0.%'
-> where ttl > NOW()
-> group by to_host;
+-------+-------------+----------+-----------+-----------+
| to_ip | hostname | allbytes | NameGroup | quota |
+-------+-------------+----------+-----------+-----------+
| NULL | okid.kk.com | NULL | OKID | 104857600 |
+-------+-------------+----------+-----------+-----------+
1 row in set (0.02 sec)
Власть в руках у чужаков, и ты им платишь дань...
- trubb
- лейтенант
- Сообщения: 865
- Зарегистрирован: 2005-03-16 17:42:26
- Откуда: сами мы не местные, приехали на лечение
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- Urgor
- лейтенант
- Сообщения: 677
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Тогда те кто не был еще в инете, так в него и не попадут. А ON для связанной таблицы равен WHERE для обычного SELECT. По крайней мере с ограничением выборки по датам проблемы нет.and from_ip not like и т.д. в where передвинь...
а то какой-то странный запрос получается...
Власть в руках у чужаков, и ты им платишь дань...
- Urgor
- лейтенант
- Сообщения: 677
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Переписал один большой запрос на много маленьких, приделал еще одну таблицу... вроде работает как надо.
Требования:
/usr/ports/databases/p5-DBI
/usr/ports/databases/p5-Mysql
Таблицы:Считалка траффика для trafd:Обработка, расчет, отключение:
Да. В rc.firewall где идут пайпы добавить # --pipe а где нат, там # --divert
Требования:
/usr/ports/databases/p5-DBI
/usr/ports/databases/p5-Mysql
Таблицы:
Код: Выделить всё
CREATE DATABASE trafd;
USE trafd;
-- Группы aka отделы, квота одна на отдел.
CREATE TABLE `groups` (
`idGroup` int(10) unsigned NOT NULL auto_increment,
`NameGroup` char(45) NOT NULL default '',
`quota` char(12) NOT NULL default '100000000',
`email` char(30) NOT NULL default '',
`boss` char(30) NOT NULL default '',
`step1` char(12) NOT NULL default '',
`mailed` char(1) NOT NULL default '0',
PRIMARY KEY (`idGroup`)
) TYPE=MyISAM;
INSERT INTO `groups` (`idGroup`,`NameGroup`,`quota`,`email`,`boss`,`step1`,`mailed`,`traffic`) VALUES
(1,'IT','419430400','it@mbfkk.spb.ru','Boss Name1','32000000','0','0'),
(2,'OKID','104857600','okid@mbfkk.spb.ru','Boss Name2','32000000','0','0'),
(3,'ASU','104857600','admin@mbfkk.spb.ru','Urgor','320000','1','0');
CREATE TABLE `hostallow` (
`idHost` int(10) unsigned NOT NULL auto_increment,
`hostname` char(40) NOT NULL default '',
`idGroup` int(10) unsigned NOT NULL default '0',
`ttl` date NOT NULL default '0000-00-00',
`bps` char(12) NOT NULL default '64000',
`bps2` char(12) NOT NULL default '32000',
`User` char(30) NOT NULL default '',
PRIMARY KEY (`idHost`)
) TYPE=MyISAM;
-- Это те хосты кому можно в инет
INSERT INTO `hostallow` (`idHost`,`hostname`,`idGroup`,`ttl`,`bps`,`bps2`,`User`) VALUES
(1,'okid.kk.com',2,'2006-04-20','64000','32000','User Name'),
(2,'urgor.kk.com',3,'2099-04-20','64000','32000','User Name');
-- Временная таблица для выборки траффика
CREATE TABLE `itemp` (
`hostname` char(40) NOT NULL default '',
`idgroup` int(10) unsigned NOT NULL default '0',
`traffic` char(16) NOT NULL default ''
) TYPE=MyISAM;
-- временная таблица для заброски траффика trafd
CREATE TABLE `traffic_tmp` (
`date` date NOT NULL default '0000-00-00',
`time` time NOT NULL default '00:00:00',
`from_IP` char(16) NOT NULL default '',
`from_host` char(40) default '',
`port_from_IP` char(8) NOT NULL default '',
`to_IP` char(16) NOT NULL default '',
`to_host` char(40) default '',
`port_to_IP` char(8) NOT NULL default '',
`protocol` enum('icmp','tcp','udp') NOT NULL default 'icmp',
`bytes` char(16) NOT NULL default '',
`allbytes` char(16) NOT NULL default ''
) TYPE=MyISAM COMMENT='tmp_table';
-- Пример того что в ней может быть
INSERT INTO `traffic_tmp` (`date`,`time`,`from_IP`,`from_host`,`port_from_IP`,`to_IP`,`to_host`,`port_to_IP`,`protocol`,`bytes`,`allbytes`) VALUES
('2006-03-31','13:25:00','192.168.0.79','','137','192.168.0.255','','137','udp','2700','4212'),
('2006-03-31','13:25:00','192.168.0.5','koroleva.kk.com','137','192.168.0.255','','137','udp','1650','2574');
-- Статистика по сетевухе xl0 за 2006 год
CREATE TABLE `xl0_2006` (
`date` date NOT NULL default '0000-00-00',
`time` time NOT NULL default '00:00:00',
`from_IP` char(16) NOT NULL default '',
`from_host` char(40) default '',
`port_from_IP` char(8) NOT NULL default '',
`to_IP` char(16) NOT NULL default '',
`to_host` char(40) default '',
`port_to_IP` char(8) NOT NULL default '',
`protocol` enum('icmp','tcp','udp') NOT NULL default 'icmp',
`bytes` char(16) NOT NULL default '',
`allbytes` char(16) NOT NULL default ''
) TYPE=MyISAM COMMENT='tmp_table';
INSERT INTO `xl0_2006` (`date`,`time`,`from_IP`,`from_host`,`port_from_IP`,`to_IP`,`to_host`,`port_to_IP`,`protocol`,`bytes`,`allbytes`) VALUES
('2006-03-28','14:14:40','192.168.0.108','quality1.kk.com','137','192.168.0.255','','137','udp','2400','3744'),
('2006-03-28','14:14:40','192.168.0.200','asu-002','22','192.168.0.37','urgor.kk.com','client','tcp','26868','29188'),
('2006-03-28','14:14:40','192.168.0.27','okorokov.kk.com','137','192.168.0.255','','137','udp','1350','2106'),
('2006-03-28','14:14:40','192.168.0.37','urgor.kk.com','client','192.168.0.200','asu-002','22','tcp','2508','4748'),
('2006-03-28','14:14:40','192.168.0.5','koroleva.kk.com','137','192.168.0.255','','137','udp','4750','7410'),
('2006-03-28','14:14:40','192.168.0.52','','631','192.168.0.255','','631','udp','2351','3471'),
('2006-03-28','14:14:40','192.168.0.79','','137','192.168.0.255','','137','udp','8000','12480'),
('2006-03-28','14:15:41','192.168.0.108','quality1.kk.com','137','192.168.0.255','','137','udp','3150','4914'),
('2006-03-28','14:15:41','192.168.0.200','asu-002','22','192.168.0.37','urgor.kk.com','client','tcp','59800','67640');
Код: Выделить всё
#!/usr/bin/perl
use DBI();
use Socket;
$traflog = "/var/traffic";
@ifaces = ("xl0");
$db = "trafd";
$user = "trafd";
$pass = "trafd";
sub cat {
open(f1, $_[0]) || die "Can\'t open $_[0]";
open(f2, ">$_[1]") || die "Can\'t open $_[1]";
while(<f1>) {
print f2 $_;
};
close(f2);
close(f1);
};
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$year = $year + 1900;
++$mon;
if (!(-e("$traflog/$year"))) { mkdir("$traflog/$year"); }
if (!(-e("$traflog/$year/$mon"))) { mkdir("$traflog/$year/$mon"); }
$dbh = DBI->connect("DBI:mysql:$db", $user, $pass) || die "Can\'t connect to MySQL\n";
$sql="CREATE TABLE IF NOT EXISTS traffic_tmp (".
"`date` DATE NOT NULL, ".
"`time` TIME NOT NULL, ".
"`from_IP` char(16) NOT NULL, ".
"`from_host` char(40) DEFAULT '', ".
"`port_from_IP` char(8) NOT NULL, ".
"`to_IP` char(16) NOT NULL, ".
"`to_host` char(40) DEFAULT '', ".
"`port_to_IP` char(8) NOT NULL, ".
"`protocol` enum('icmp','tcp','udp') NOT NULL, ".
"`bytes` char(16) NOT NULL, ".
"`allbytes` char(16) NOT NULL ".
") TYPE=MyISAM COMMENT='tmp_table';";
$sth = $dbh->prepare($sql);
$sth->execute();
foreach $iface (@ifaces) {
$sql="DELETE FROM traffic_tmp;";
$sth = $dbh->prepare($sql);
$sth->execute();
system ("/usr/local/bin/trafsave","$iface");
open(OLDOUT, ">&STDOUT");
open(STDOUT, "> /tmp/summary.$iface");
system ("/usr/local/bin/traflog","-i","$iface","-a","-n","-s");
close(STDOUT);
open(STDOUT, ">&OLDOUT");
close(OLDOUT);
cat("/tmp/summary.$iface",">$traflog/$year/$mon/summary.$iface");
unlink("/usr/local/var/trafd/trafd.$iface");
open(f1,"/tmp/summary.$iface") || die "Can\'t open /tmp/summary.$iface";
while(<f1>) {
chomp $_;
tr/ / /s;
($fromip,$fromport,$toip,$toport,$proto,$bytes,$allbytes) = split(/ /,$_);
if (($fromip != "") and ($toip != "")) {
$iaddr = inet_aton($fromip);
$fromname = gethostbyaddr($iaddr, AF_INET);
$iaddr = inet_aton($toip);
$toname = gethostbyaddr($iaddr, AF_INET);
$sql="insert into `traffic_tmp2` (date, time, from_ip, from_host, \n".
"port_from_ip, to_ip, to_host, port_to_ip, protocol, bytes, allbytes) \n".
"values ('$year-$mon-$mday', '$hour:$min:$sec', '$fromip','$fromname', \n".
"'$fromport', '$toip', '$toname', '$toport', '$proto', '$bytes', '$allbytes');\n";
$sth = $dbh->prepare($sql);
$sth->execute();
} # if
} # while(<f1>)
$sql="CREATE TABLE IF NOT EXISTS $iface"."_$year (".
"`date` DATE NOT NULL, ".
"`time` TIME NOT NULL, ".
"`from_IP` char(16) NOT NULL, ".
"`from_host` char(40) DEFAULT '', ".
"`port_from_IP` char(8) NOT NULL, ".
"`to_IP` char(16) NOT NULL, ".
"`to_host` char(40) DEFAULT '', ".
"`port_to_IP` char(8) NOT NULL, ".
"`protocol` enum('icmp','tcp','udp') NOT NULL, ".
"`bytes` char(16) NOT NULL, ".
"`allbytes` char(16) NOT NULL ".
") TYPE=MyISAM;";
$sth = $dbh->prepare($sql);
$sth->execute();
$sql="insert into `$iface\_$year` (date, time, from_ip, from_host, \n".
"port_from_ip, to_ip, to_host, port_to_ip, protocol, bytes, allbytes) \n".
"SELECT date, time, from_ip, from_host, port_from_ip, to_ip, to_host, \n".
"port_to_ip, protocol, sum(bytes) as bytes, sum(allbytes) as allbytes \n".
"FROM traffic_tmp GROUP BY date, time, from_ip, from_host, \n".
"port_from_ip, to_ip, to_host, port_to_ip, protocol \n";
$sth = $dbh->prepare($sql);
$sth->execute();
} # foreach
unlink("/var/log/traffic.log");
$sth->finish();
$dbh->disconnect;
Код: Выделить всё
#!/usr/bin/perl
use DBI();
use Socket;
$rcfw = "/etc/rc.firewall";
$nwfw = ">/home/urgor/perl/rc.firewal.new";
$hostsallow = ">/usr/local/etc/squid/hostsallow.conf";
$db = "trafd";
$user = "trafd";
$pass = "trafd";
$iface = "xl0";
$admemail = "admin\@mbfkk.spb.ru";
$RobotName = "Stat Robot";
$RobotAddr = "admin\@mbfkk.spb.ru";
$admbody = "";
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$year = $year + 1900;
++$mon;
$mon2 = $mon + 1;
sub SendEMail {
open (SENDMAIL, "|/usr/sbin/sendmail -t") or die "sendmail not ready";
print SENDMAIL "From: $RobotName <$RobotAddr>\n";
print SENDMAIL "To: $_[0]\n";
print SENDMAIL "Reply-To: Evgeniy V. Podlesniy <$admemail>\n";
print SENDMAIL "Content-Type: text/plain; charset=koi8-r\n";
print SENDMAIL "Subject: $_[1]\n\n";
print SENDMAIL "$_[2]";
close (SENDMAIL) or warn "sendmail didn`t close nicely";
};
$dbh = DBI->connect("DBI:mysql:$db", $user, $pass) || die "Can\'t connect to MySQL\n";
# Чистим временную таблицу
$sql="delete from itemp;";
$sth = $dbh->prepare($sql);
$sth->execute();
# Считаем траффик что юзера натаскали за текущий месяц
$sql="insert into itemp (idgroup, hostname, traffic)\n".
"select idgroup, to_host, sum(allbytes) from $iface\_$year, hostallow\n".
"where `hostallow`.`hostname` = `$iface\_$year`.`to_host` and\n".
"(`$iface\_$year`.`date` >= '$year-$mon-00' and \n".
"`$iface\_$year`.`date` < '$year-$mon2-00') and \n".
"from_IP NOT LIKE '192.168.0.%' \n".
"group by to_host;";
$sth = $dbh->prepare($sql);
$sth->execute();
# Выбираем хосты у которых не истек "срок годности"
$sql="select hostname, bps, bps2, NameGroup, `groups`.`idgroup`,\n".
"User, quota, email, boss, step1, mailed\n".
"from hostallow\n".
"left join groups on `groups`.`idgroup` = `hostallow`.`idgroup`\n".
"where ttl > now();\n";
$sth = $dbh->prepare($sql);
$sth->execute();
while (@tmp = $sth->fetchrow_array()) {
($hostname, $bps, $bps2, $NameGroup, $idGroup, $User,
$quota, $email, $boss, $step1, $mailed) = @tmp;
$hostip = inet_ntoa(inet_aton($hostname));
$sql="select sum(traffic) from itemp\n".
"where `itemp`.`idgroup` = $idGroup\n".
"group by `itemp`.`idgroup`;";
# print "$sql\n";
$stt=$dbh->prepare($sql);
$stt->execute();
if (defined $stt) {
($traffic) = $stt->fetchrow_array();
$stt->finish();
} else {$traffic = 0};
$users[$#users + 1] = [ ($hostip, $hostname, $bps, $bps2, $NameGroup, $idGroup,
$User, $quota, $traffic, $email, $boss, $step1, $mailed) ];
# print "$hostname [ @{$users[ $#users ]} ],\n";
}; # while
$sth->finish();
open(f1,$rcfw) || die "Can\'t open file: $rcfw\n";
open(f2,$nwfw) || die "Can\'t create file: $nwfw\n";
while (<f1>) {
print f2 $_;
if (index($_, "--pipe") > 0) {
open (squid, $hostsallow) or die "Can\'t create file: $hostsallow\n";
$pipe = 1;
for $i ( 0 .. $#users ) {
($hostip, $hostname, $bps, $bps2, $NameGroup, $idGroup,
$User, $quota, $traffic, $email, $boss, $step1, $mailed) = @{$users[$i]};
if ($traffic < $step1) {
print f2 "\${FwCMD} add pipe $pipe ip from not \${NetIn} to $hostip\n";
print f2 "\${FwCMD} pipe $pipe config bw $bps"."bit/s\n";
print squid "$hostip \n";
} elsif ($traffic < $quota) {
print f2 "\${FwCMD} add pipe $pipe ip from not \${NetIn} to $hostip\n";
print f2 "\${FwCMD} pipe $pipe config bw $bps2"."bit/s\n";
print squid "$hostip \n";
}; #if .. elsif
++$pipe;
}; # for $i
}; # if (index
if (index($_, "--divert") > 0) {
for $i ( 0 .. $#users ) {
($hostip, $hostname, $bps, $bps2, $NameGroup, $idGroup,
$User, $quota, $traffic, $email, $boss, $step1, $mailed) = @{$users[$i]};
if ($traffic < $quota) {
print f2 "\${FwCMD} add divert natd ip from $hostip to any out via ${LanOut}\n";
}; #if
}; # for $i
}; # if (index
}; # while(<f1>)
$sql="select NameGroup, quota, email, boss, step1,\n".
"mailed, `groups`.`idgroup`, sum(`itemp`.`traffic`)\n".
"from itemp, groups\n".
"where `itemp`.`idgroup` = `groups`.`idgroup` and\n".
"`groups`.`mailed` < 2\n".
"group by `groups`.`idgroup`;";
$sth = $dbh->prepare($sql);
$sth->execute();
#print "NameGroup, quota, email, boss, step1, mailed, idGroup, traffic\n";
while (($NameGroup, $quota, $email, $boss, $step1, $mailed,
$idGroup, $traffic) = $sth->fetchrow_array()) {
# print "$NameGroup, $quota, $email, $boss, $step1, $mailed, $idGroup, $traffic\n";
if (($traffic > $step1) and ($mailed < 1)) {
$body = "Здравствуйте, $boss!\n\n".
"Настоящим сообщаю, что Ваш отдел $NameGroup \n".
"приблизился к порогу отключения, который составляет $quota байт.\n".
"На текущий момент у вас получено $traffic байт.\n\n".
"Статистика:\n";
$sql="select user, `hostallow`.`hostname`, traffic\n".
"from hostallow\n".
"left join itemp on `itemp`.`idgroup` = $idGroup\n".
"where `hostallow`.`idgroup` = $idGroup\n".
"order by user, hostname;";
$stt = $dbh->prepare($sql);
$stt->execute();
$admbody = $admbody . "Отдел: $NameGroup\n Выбрано: $traffic из $quota\tПредупреждение\n";
while (($user, $hostname, $traffic) = $stt->fetchrow_array()) {
$body = $body . "\t$user\t$hostname\t$traffic байт\n";
$admbody = $admbody . "\t$user\t$hostname\t$traffic байт\n";
};
$stt->finish();
SendEMail("$boss <$email>", "Вы подошли к порогу отключения", "$body");
$sql="update groups set mailed = '1'".
"where NameGroup = '$NameGroup';\n";
$stt = $dbh->prepare($sql);
$stt->execute();
$stt->finish();
} elsif (($traffic > $quota) and ($mailed < 2)) {
$body = "Здравствуйте, $boss!\n\n".
"Настоящим сообщаю, что Ваш отдел $NameGroup \n".
"превысил установленную квоту, которая составляет $quota байт.\n".
"В текущем месяце интернет для Вашего отдела более не доступен.\n\n".
"Статистика:";
$stt = $dbh->prepare($sql);
$stt->execute();
$admbody = $admbody . "Отдел: $NameGroup\n Выбрано: $traffic из $quota\t Отключен\n";
while (($user, $hostname, $traffic) = $stt->fetchrow_array()) {
$body = $body . "\t$user\t$hostname\t$traffic байт\n";
$admbody = $admbody . "\t$user\t$hostname\t$traffic байт\n";
};
$stt->finish();
$body = $body . $users;
$admbody = $admbody . $users . "\n\n";
SendEMail("$boss <$email>", "Вы подошли к порогу отключения", "$body");
$sql="update groups set mailed = '2'".
"where NameGroup = '$NameGroup';\n";
$stt = $dbh->prepare($sql);
$stt->execute();
$stt->finish();
}
};
if (!($admbody eq "")) { # Еслу ругались на юзверей -- жалуемся админу
SendEMail("Urgor <$admemail>", "Предупреждения, отключения", "Гигабитного тебе коннекта, Urgor!\n\n $admbody");
}
$dbh->disconnect;
Власть в руках у чужаков, и ты им платишь дань...
- Urgor
- лейтенант
- Сообщения: 677
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Возникло несколько вопросов:
1. Пайпы работают, но... ограничение действует и на получение почты с почтовика и на SSH, а хотелось бы что бы они работали на все 100м/бит, а резался только инет.
Вот пример пайпов:
${FwCMD} add pipe 1 ip from not ${NetIn} to 192.168.0.37
${FwCMD} pipe 1 config bw 64000bit/s
2. Где в настройках DHCP винды прописаль гейт по умолчанию, дабы он брался автоматом вместе с ip?
1. Пайпы работают, но... ограничение действует и на получение почты с почтовика и на SSH, а хотелось бы что бы они работали на все 100м/бит, а резался только инет.
Вот пример пайпов:
${FwCMD} add pipe 1 ip from not ${NetIn} to 192.168.0.37
${FwCMD} pipe 1 config bw 64000bit/s
2. Где в настройках DHCP винды прописаль гейт по умолчанию, дабы он брался автоматом вместе с ip?
Власть в руках у чужаков, и ты им платишь дань...
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
у меня принудительно добавлено
насчёт ДХЦП
Код: Выделить всё
${FwCMD} add pipe 1 ip from ${IpOut} to ${NetIn}/${NetMask}
${FwCMD} pipe 1 config bw 100Mbit/s
${FwCMD} add pipe 2 ip from ${IpIn} to ${NetIn}/${NetMask}
${FwCMD} pipe 2 config bw 100Mbit/s
${FwCMD} add pipe 3 ip from ${NetIn}/${NetMask} to me
${FwCMD} pipe 3 config bw 100Mbit/s
- Вложения
-
- 463653124521.png (3.77 КБ) 5788 просмотров
Убей их всех! Бог потом рассортирует...
- Urgor
- лейтенант
- Сообщения: 677
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- Urgor
- лейтенант
- Сообщения: 677
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Забей! Первый блин пошел комом perl за неделю -- это не реально, да и писалось без возможности потестить в реале, а в реале... В реале прикрутил еще portcentry (мдя. тока поставили инет и толпы идиотов со сканерами полезли), поэтому пришлось дорисовать hostdeny куда пихать этих идиотов, а потом вместе с инетчиками поднимать и чистить. Так что от опубликованного уже мало что осталось.... Посему, как закончу (появится окончательная версия всем меня устраивающая) сразу опубликую.
Да, с именами хостов так ничего и не вышло Исторически сложилось что домен у нас (нутряной, AD который) совпадает с зареганым (не нами) в инете Посуму х...ня какая-то получается. А 200 машин перезаводить.... ну нах. В DHCP занято менее половины адресов, посему просто продлил время арендв до 20 дней. (т.к. отпуск бывает по 14 дней).
Да, с именами хостов так ничего и не вышло Исторически сложилось что домен у нас (нутряной, AD который) совпадает с зареганым (не нами) в инете Посуму х...ня какая-то получается. А 200 машин перезаводить.... ну нах. В DHCP занято менее половины адресов, посему просто продлил время арендв до 20 дней. (т.к. отпуск бывает по 14 дней).
Власть в руках у чужаков, и ты им платишь дань...
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- Urgor
- лейтенант
- Сообщения: 677
- Зарегистрирован: 2006-03-14 16:30:18
- Откуда: Гилея (СПб)
- Контактная информация:
Лис, ты помнится хвалился крутой банерорезалкой А поделишся? Засунул кейворды от аутпоста в твой редиректор... не сильно помогло, да и глядеть на "The page cannot be..." вместо банеров не очень хорошо (хотя траффик экономит). И расскажи про зарезание чатов. Ты вылавливал руками или?
Хмм... нашел что-то похожее rejik.ru
Хмм... нашел что-то похожее rejik.ru
Власть в руках у чужаков, и ты им платишь дань...
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
в редиректор непложо бы картинку положить Вместо нот фоунд показывается ))
а режик - да ,походее, но я не юзал ни разу, своим доволен...
тут - http://forum.lissyara.su/viewtopic.php?t=392 выкладывал свои сайты... а ловил - руками ловил
а режик - да ,походее, но я не юзал ни разу, своим доволен...
тут - http://forum.lissyara.su/viewtopic.php?t=392 выкладывал свои сайты... а ловил - руками ловил
Убей их всех! Бог потом рассортирует...