Страница 1 из 1

IPFW и PIPE

Добавлено: 2014-12-16 9:01:28
underground
Всем доброго времени суток!!!
Понимаю, что тема избитая, но что-то у меня не получается... Вроде все делаю по Библии, а положительного результата нет...
Нужно ограничить полосу трафика для некоторых пользователей. Решил реализовать с помощью IPFW.
В конце файла с правилами для IPFW прописал две строки:

Код: Выделить всё

ipfw add pipe 7 ip from any to 192.168.20.52 out via re2
ipfw pipe 7 config bw 512Kbit/s 
После попытки подгрузить правила командой: sh /etc/ipfw.rules выводит сообщение:

Код: Выделить всё

root@FreeBSD:/ # sh /etc/ipfw.rules
01099 pipe 7 ip from any to 192.168.20.52 out via re2
root@FreeBSD:/ #
При проверке скорости скачки на хосте 192.168.20.52 естественно никаких ограничений нет...

Пробовал делать:
1. Подгружал модуль вручную командой kldload dummynet - не помогло
2. Проверял kldstat:

Код: Выделить всё

     root@FreeBSD:/ # kldstat
     Id Refs Address    Size     Name
      1   12 0xc0400000 12045b8  kernel
      2    3 0xc6a69000 12000    ipfw.ko
      3    1 0xc6aa3000 4000     ipdivert.ko
      4    1 0xcd641000 d000     dummynet.ko
     root@FreeBSD:/ # 
вроде все подгружено...
3. Пробовал дрписать в файл /etc/rc.conf строку dummynet_enable="YES" - не помогло...

Помогите пожалуйста разобраться, что я делаю не так...

Заранее всем благодарен и признателен за Ваши советы
С уважением
Илья

Re: IPFW и PIPE

Добавлено: 2014-12-17 11:00:33
Гость
Без полного списка правил не помочь.

Re: IPFW и PIPE

Добавлено: 2014-12-17 13:24:51
underground
Прошу прощения... Вот список правил, действующих на данный момент:

Код: Выделить всё

root@FreeBSD:/ # cat /etc/ipfw.rules

ipfw -q -f flush

LanOut="re1"
LanIn="re2"
IpOut="192.168.0.210"
IpIn="192.168.20.210"
dns1="217.12.81.129"
dns2="217.12.81.131"
cmd="ipfw -q add"
ks="keep-state"
skip="skipto 800"


$cmd 005 allow all from any to any via $LanIn
$cmd 006 allow all from any to any via lo0
$cmd 007 pass tcp from any to 192.168.20.52 8181 in recv $LanOut
$cmd 010 allow tcp from me to any out via $LanOut keep-state uid squid
$cmd 011 fwd 127.0.0.1,3129 tcp from 192.168.20.0/24 to any 80-83, 8080-8088 out via $LanOut
$cmd 012 divert natd ip from any to any in via $LanOut
$cmd 013 check-state

###########################################
#####FOR OUTBOUND TRAFFIC ON OUTSIDE INTERFACE#####
###########################################

$cmd 040 $skip tcp from any to any 80 out via $LanOut setup $ks
$cmd 050 $skip tcp from any to any 443 out via $LanOut setup $ks
$cmd 060 $skip tcp from any to any 25 out via $LanOut setup $ks
$cmd 061 $skip tcp from any to any 110 out via $LanOut setup $ks
$cmd 070 $skip tcp from me to any out via $LanOut setup $ks uid root
$cmd 080 $skip icmp from any to any out via $LanOut $ks
$cmd 090 $skip tcp from any to any 37 out via $LanOut setup $ks
$cmd 100 $skip tcp from any to any 119 out via $LanOut setup $ks
$cmd 110 $skip tcp from any to any 22 out via $LanOut setup $ks
$cmd 120 $skip tcp from any to any 43 out via $LanOut setup $ks
$cmd 130 $skip udp from any to any 123 out via $LanOut $ks


###########################################
#####FOR INCOMING TRAFFIC ON OUTSIDE INTERFACE#####
###########################################

$cmd 301 deny all from 172.16.0.0/12 to any in via $LanOut
$cmd 302 deny all from 10.0.0.0/8 to any in via $LanOut
$cmd 303 deny all from 127.0.0.0/8 to any in via $LanOut
$cmd 304 deny all from 0.0.0.0/8 to any in via $LanOut
$cmd 305 deny all from 169.254.0.0/16 to any in via $LanOut
$cmd 306 deny all from 192.0.2.0/24 to any in via $LanOut
$cmd 307 deny all from 204.152.64.0/23 to any in via $LanOut
$cmd 308 deny all from 224.0.0.0/3 to any in via $LanOut
$cmd 309 deny all from any to any 445 in via $LanOut
$cmd 315 deny tcp from any to any 113 in via $LanOut
$cmd 320 deny tcp from any to any 137 in via $LanOut
$cmd 321 deny tcp from any to any 138 in via $LanOut
$cmd 322 deny tcp from any to any 139 in via $LanOut
$cmd 323 deny tcp from any to any 81 in via $LanOut
$cmd 330 deny all from any to any frag in via $LanOut
$cmd 370 allow tcp from any to me 80 in via $LanOut setup limit src-addr 2
$cmd 380 allow tcp from any to me 22 in via $LanOut setup limit src-addr 2
$cmd 399 deny icmp from any to any in via $LanOut
$cmd 400 allow tcp from any to 192.168.20.2 dst-port 8080,21 via re1
$cmd 401 allow tcp from any to 192.168.20.2 dst-port 8080,21 via re2


$cmd 800 divert natd ip from any to any out via $LanOut
$cmd 801 allow ip from any to any

$cmd 999 deny log all from any to any

ipfw add pipe 7 ip from any to 192.168.20.52 out via re2
ipfw pipe 7 config 7 bw 512Kbit/s

#############THE END###############
root@FreeBSD:/ # 

Re: IPFW и PIPE

Добавлено: 2014-12-17 16:55:09
rmn

Код: Выделить всё

ipfw add 4 pipe 7 ...

Re: IPFW и PIPE

Добавлено: 2014-12-17 18:41:32
Гость
Имеется ввиду что правило шейпа должно идти в начале, и не забудь про

Код: Выделить всё

net.inet.ip.fw.one_pass
, т.к. по умолчанию после шейпера проверка по правилам не будет производиться.

Re: IPFW и PIPE

Добавлено: 2014-12-18 8:43:29
underground
Уважаемый rmn, не могли бы Вы уточнить, если я правильно понял, то полностью правило будет выглядеть следующим образом:

Код: Выделить всё

ipfw add 4 pipe 7 ip from any to 192.168.20.52 out via re2 net.inet.ip.fw.one_pass
ipfw pipe 7 config 7 bw 512Kbit/s
Правильно?
Заранее благодарен Вам.
С уважением,
Илья

Re: IPFW и PIPE

Добавлено: 2014-12-18 10:21:49
Гость
:-D извини, но ты реально смешон! Прежде чем писать правила, а тем более с шейпером, потрать пару дней тупо на изучение документации, ее предостаточно. У тебя полное непонимане что к чему.
з.ы.: one_pass это sysctl параметр...

Re: IPFW и PIPE

Добавлено: 2014-12-18 11:02:23
underground
Уважаемый ГостьБлагодарю Вас - Вы очень помогли...