Сообщения osipen
PF + PPPOE
bsd# ee /etc/pf.conf
prov_if="rl0" # Название внешнего интерфейса
int_if="fxp0" # Название внутреннего интерфейса
internal_net="{192.168.0.0/24}" # Внутренняя подсеть
me="{192.168.0.1}"
и т.д
Все просто и самое главное работает. Только вот если усложнить задачу, добавляем PPPOE и все сразу перестает работать. При PPPOE соединении, ifconfig показывает rl0, fxp0 и tun0(то самое PPPOE). Физически в системе две сетевые карты, а tun0 устройство появляется при PPPOE соединении. Ошибка в названии внешнего интерфейса там я писал и prov_if="rl0" и prov_if="tun0", PF при загрузке ругается на то и надругое. Задача присвоить переменной prov_if название внешнего сетевого интерфеиса.
Postfix + AWStats
Деление в bash
#!/bin/bash
t=` expr 10000000000 / 2 `
echo "Рарно= $t"
mail# ./test
Рарно= 1073741823
mail#
А если один ноль убрать то деление проходит правильно, как дело в том что мне надо работать с большими числами. Как мне решить эту проблему.
FTP и PF
pass out quick on $ext_if inet proto tcp from $ext_if to any port 20 keep state
pass in on $int_if inet proto tcp from $int_net to $me port 22 keep state
pass in quick on $int_if inet proto tcp from $int_net to $me port 21 keep state
НЕПОМОГАЕТ!!!!!!!! ЧТО НУЖНО СДЕЛАТЬ ДЛЯ ТОГО ЧТО БЫ ОТКРЫТЬ FTP???
Коллекция портов FreeBSD
prov_if="fxp1" int_if="fxp0" internal_net="{192.168.1.0/24, 192.168.2.247, 192.168.3.247}" me="{192.168.1.1, 192.168.2.1}"
# LAN_to_INT="{ftp,ftp-data,www,https,ssh,smtp,pop3,nntp,8080,ntp,411,5190}&q uot;
nat on $prov_if from $internal_net to any -> $prov_if
# block in all # block out all
block in on $prov_if from any to any
# pass in on $prov_if inet proto icmp from any to $prov_if icmp-type 8 keep state pass in on $prov_if inet proto tcp from any to $prov_if port 22 keep state # pass in on $prov_if inet proto tcp from any to $prov_if icmp-type 25 keep state
block in on $prov_if from $prov_if to any
pass out on $prov_if inet proto icmp from $prov_if to any icmp-type 8 keep state pass out on $prov_if inet proto tcp from $prov_if to any port www keep state pass out on $prov_if inet proto tcp from $prov_if to any port 25 keep state pass out on $prov_if inet proto tcp from $prov_if to any port 110 keep state pass out on $prov_if inet proto tcp from $prov_if to any port ftp keep state pass out on $prov_if inet proto tcp from $prov_if to any port ssh keep state pass out on $prov_if inet proto udp from $prov_if to any port 53 keep state
block in on $int_if from $internal_net to $me
pass in on $int_if inet proto tcp from $internal_net to $me port 22 keep state pass in on $int_if inet proto udp from $internal_net to $me port 53 keep state pass in on $int_if inet proto icmp from $internal_net to $me icmp-type 8 keep state pass in on $int_if inet proto tcp from $internal_net to $me port www keep state pass in on $int_if inet proto tcp from $internal_net to $me port ftp keep state pass out on $int_if inet proto tcp from $internal_net to $me port ssh keep state
FreeBSD + TRAFD
Скрипт
apache1.3
SARG
SQUID - настойка
PF - настройка
prov_if="rl1"
int_if="vr0"
internal_net="192.168.1.0/24"
me="192.168.1.1"
LAN_to_INT="{ftp,ftp-data,www,https,ssh,smtp,pop3,nntp,8080,ntp,411,5190}&q uot;
scrub in all
nat on $prov_if from $internal_net to any port 25 -> $prov_if
nat on $prov_if from $internal_net to any port 110 -> $prov_if
nat on $prov_if from $internal_net to any port 80 -> $prov_if
# block in on $prov_if from any to any
pass in on $prov_if inet proto icmp from any to $prov_if icmp-type 8 keep state
pass in on $prov_if inet proto tcp from any to $prov_if icmp-type 22 keep state
pass in on $prov_if inet proto tcp from any to $prov_if icmp-type 25 keep state
pass out on $prov_if inet proto icmp from $prov_if to any icmp-type 8 keep state
pass out on $prov_if inet proto tcp from $prov_if to any port www keep state
pass out on $prov_if inet proto tcp from $prov_if to any port ftp keep state
pass out on $prov_if inet proto tcp from $prov_if to any port ssh keep state
pass out on $prov_if inet proto udp from $prov_if to any port 53 keep state
pass out on $int_if inet proto udp from $internal_net to $me port 53 keep state
pass out on $int_if inet proto icmp from $me to $internal_net icmp-type 8 keep state
Packet Filter
FreeBSD и IPFW
Условие имеем компьютер с двумя сетевыми картами.
defaultrouter="192.168.0.1"
gateway_enable="YES"
hostname="gatebsd.natu.local"
ifconfig_fxp0="inet 192.168.1.1 netmask 255.255.255.0"
ifconfig_fxp1="inet 192.168.0.161 netmask 255.255.255.0"
firewall_enable="YES"
firewall_type="OPEN"
Задача закрыть все на fxp1, а на fxp0 открыть все для например ip
192.168.1.248, а остальным из той же подсети все закрыть Интерфейс
который смотрит в Интернет fxp1. У кого нибудь есть готовое решение?
Подсчет трафика FreeBSD (trafd)
/usr/local/var/traffic/20060619.fxp0) gatebsd.natu.local at Jun 19 10:56:41 - Jun 19 11:03:42 Summary: 481252 data bytes, 630236 all bytes, 8 records From Port To Port Proto Data All 192.168.1.1 22 192.168.1.248 client tcp 378596 445876 192.168.1.248 client 192.168.1.1 22 tcp 79716 157076 192.168.1.248 client 192.168.0.4 445 tcp 6646 7862
FreeBSD и trafd
# ./db_step1.pl syntax error at ./db_step1.pl line 14, near "=)" syntax error at ./db_step1.pl line 56, near "}" Execution of ./db_step1.pl aborted due to compilation errors. Что делать??????? ____________________________________________________________________ Для обработки текстовых файлов трафика будем использовать следующий скрипт (назовем его /usr/local/etc/traffic/db_step1.pl):
#!/usr/bin/perl use Mysql;
$plain_path='/usr/local/var/traffic_plain/'; $yesterday=`date -v-1d '+%Y%m%d'`; chomp($yesterday); $full_path=$plain_path.$yesterday.".fxp0";
$dbh = Mysql->Connect("","ipacc"); $del_query="delete from yesterday;"; $dbh->Query($del_query);
open(F,$full_path) || die "Can't open traffic plain file"; while ($str=) { chomp($str); $fi=substr($str,0,1);
if (($fi>='1') && ($fi<='9')) { @a=split('\s+',$str); # @a[0] - src_ip, @a[1] - src_port, @a[2] - dst_ip, @a[3] - dst_port # @a[4] - proto, @a[6] - size of packets
if (@a[1] eq 'client') { $src_port=65535; } else { if (@a[1] eq 'none') { $src_port=0; } else { $src_port=@a[1];
} } if (@a[3] eq 'client') { $dst_port=65535; } else { if (@a[3] eq 'none') { $dst_port=0; } else { $dst_port=@a[3]; } } $proto=0; if (@a[4] eq 'icmp') { $proto=1; } if (@a[4] eq 'tcp') { $proto=6; } if (@a[4] eq 'udp') { $proto=17; }
$ins_query="insert into yesterday (src_ip, src_port, dst_ip,\ dst_port, proto, bytes) values ('".@a[0]."',".$src_port.\ ",'".@a[2]."',".$dst_port.",".$proto.\"," ;.$a[6].");"; $dbh->Query($ins_query); }; };
close(F);
| ← назад |