Jump to content
Local
Pit

Скрипт обновления сетей в таблицах ipfw.

Recommended Posts

Скрипт обновления сетей в таблицах ipfw.

Требуеться модулб p5-libwww.

/usr/ports/www/p5-libwww

 

#!/usr/bin/perl

#

# Load and Update NETWORK ipfw table. 2006

# Формат сетей xxx.xxx.xxx.xxx/xx

 

use LWP;

$table=1;

$ipfw="/sbin/ipfw";

$getipfwl=`$ipfw table $table list`;

$url="http://www.colocall.net/ua/prefixes.txt";

 

my $ua=LWP::UserAgent->new();

$ua->agent("PerlUA/0.1");

my $document=$ua->request(HTTP::Request->new(GET => $url));

if ($document->is_success){

$uaix=($document->content);

$uaix=~s/\s/\n/g;

@uaix = split /\n/,$uaix;

}

else

{

print "Couldn't fetch $url\n";

exit;

}

 

$getipfwl =~s/\ \d//g;

@tablenet = split /\n/,$getipfwl;

 

###################################

 

%seen =();

@aonly =();

foreach $ip (@tablenet) {

$seen{$ip} = 1;

};

 

foreach $ip (@uaix) {

unless (@uaix) {

push(@aonly, $ip);

}

}

my %seen;

my @aonly;

@seen{@tablenet} =();

foreach $ip (@uaix) {

push(@aonly, $ip) unless exists $seen{$ip};

}

 

foreach $ip (@aonly){

system("$ipfw table $table add $ip");

print("$ip add\n");

}

####################################

 

%seen =();

@aonly =();

 

foreach $ip (@uaix) {

$seen{$ip} = 1;

};

 

foreach $ip (@tablenet) {

unless (@tablenet) {

push(@aonly, $ip);

}

}

my %seen;

my @aonly;

@seen{@uaix} =();

foreach $ip (@tablenet) {

push(@aonly, $ip) unless exists $seen{$ip};

}

 

foreach $ip (@aonly){

print("$ip del\n");

system("$ipfw table $table delete $ip");

}

Share this post


Link to post
Share on other sites

Что не пригодился никому?

Share this post


Link to post
Share on other sites
Что не пригодился никому?

честно непонятно что это и зачем надо

Share this post


Link to post
Share on other sites

Я думаю, он может пригодиться для закрытиЯ/открытия только украины без мира.

Share this post


Link to post
Share on other sites
Я думаю, он может пригодиться для закрытиЯ/открытия только украины без мира.

Именно так.

Или кончился у юсера мир, по skip to перекидываеи его на таблицу и получает оставшуюся украину.

Share this post


Link to post
Share on other sites

логичнее пускать всегда на украину.. и отдельное пропускать на мир..деньги кончились коннекта нет на мир а Украина продолжает илдти..я подозреваю раза в 2 меньше писанины..=)

Share this post


Link to post
Share on other sites
логичнее пускать всегда на украину.. и отдельное пропускать на мир..деньги кончились коннекта нет на мир а Украина продолжает илдти..я подозреваю раза в 2 меньше писанины..=)

логичней, конечно..

но то что ты сказал существует уже хрен знает сколько времени

а реализовать его "просто" можно лишь с фриибсд последних версий (ipfw2)

а вот правильней - покан а счету есть деньги - работает все.. как только деньги закончились - отключается все..

--

у меня утилиткой aggregate + скриптом формируется оптимизированный список украины в формате xi.. после него скрипт на перле (несколько строчек) - заносит его в table(1)..

Share this post


Link to post
Share on other sites

с ipfw и 2 не работал стоит Pf

но реально проблема решена таким образом

таблица 1

таблица 2

 

нат таблица 1 в мир

нат таблица 2 в лкальные ресурсы

и потом просто работаем с таблицами

 

у меня локальные ресурсы практически нахаляву так что их подключенным можно всегда...так что может из за этого я не вижу проблемы..тогда заранее извините =)

Share this post


Link to post
Share on other sites

2DZkik: Поясню - представь, что из фаера убрали такую штуку, как "таблица"... )

Share this post


Link to post
Share on other sites

Перечитал скрипт, понял, что он сравнивает таблицу в фаерволе с таблицей с сайта.

И удаляет/добавляет нужное.

Очень удобно.

 

Хотя мне интересно, если с агрегацией играться, не вызовет ли это проблем для сравнения?

Share this post


Link to post
Share on other sites

ммм.. а кстати, как проходит раздельная тарификация украины/мира?

взять список сетей с колокола, пропустить через aggregate и как-то втолкнуть в rules старгейзера?

Share this post


Link to post
Share on other sites
Перечитал скрипт, понял, что он сравнивает таблицу в фаерволе с таблицей с сайта.

И удаляет/добавляет нужное.

Очень удобно.

 

Хотя мне интересно, если с агрегацией играться, не вызовет ли это проблем для сравнения?

Агрегируй входящий и с нимже сравнивай, лишнее убереться/добавиться

Share this post


Link to post
Share on other sites

Скрипт обновления сетей в таблицах ipfw.

Требуеться модулб p5-libwww.

/usr/ports/www/p5-libwww

 

#!/usr/bin/perl

#

# Load and Update NETWORK ipfw table. 2006

# Формат сетей xxx.xxx.xxx.xxx/xx

 

use LWP;

$table=1;

$ipfw="/sbin/ipfw";

$getipfwl=`$ipfw table $table list`;

$url="http://www.colocall.net/ua/prefixes.txt";

 

my $ua=LWP::UserAgent->new();

$ua->agent("PerlUA/0.1");

my $document=$ua->request(HTTP::Request->new(GET => $url));

if ($document->is_success){

$uaix=($document->content);

$uaix=~s/\s/\n/g;

......

foreach $ip (@aonly){

system("$ipfw table $table add $ip");

print("$ip add\n");

}

......

Вот тоже надо таблицами управлять, но не получилось....)

Вот такой простейший скрипт:

#!/usr/local/bin/perl

print ("Content-type: text/html\n\n");

use strict;
use CGI ':standard';
use Socket;

my $date = localtime;
my $log = "/usr/scripts/on.log";
my $key = param('key');
my $kod = param('kod');
my $ipfw = "/sbin/ipfw";
my $table = "2";
my $ip = "192.168.30.0/24";

my $metka = 0;
my $id = param('id');

if ($key eq "euflfk")   {
    if ($kod eq "vsem")         {
        if ($id eq "10.10.10.2")        {
        if (open(LOG, ">>$log"))        {
        print LOG "$date"."_"."OPEN"."_"."$id"."_"."$kod"."\n";
        close(LOG);
        system("$ipfw table $table add $ip");
                                }
                                        }
                                }
                        }
exit 0;

Что не так?....

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×