Страница 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
Re: IPFW и PIPE
Добавлено: 2014-12-17 18:41:32
Гость
Имеется ввиду что правило шейпа должно идти в начале, и не забудь про
, т.к. по умолчанию после шейпера проверка по правилам не будет производиться.
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
Гость

извини, но ты реально смешон! Прежде чем писать правила, а тем более с шейпером, потрать пару дней тупо на изучение документации, ее предостаточно. У тебя полное непонимане что к чему.
з.ы.: one_pass это sysctl параметр...
Re: IPFW и PIPE
Добавлено: 2014-12-18 11:02:23
underground
Уважаемый ГостьБлагодарю Вас - Вы очень помогли...