The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"ipfw + pipe Отказывается рабоатать"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Квоты, ограничения, QoS / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"ipfw + pipe Отказывается рабоатать"  +/
Сообщение от sbrfrf email(ok) on 16-Апр-14, 20:22 
Добрый день всем
Столкнулся с проблемой необхоимо сделать ограничение скорости интернет для пользователей
Делаю через pipe freebsd 9.2
Проверяю через iftop показывает что качает на полной скорости. Пробавл и после и перед diver ставить не помогает. Синтаксис как  в мане вродебы. набрел на тему у чела такая же проблема так и не решили (
Посмотрите может кто что заметит
rc.conf


sshd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"
#rusconsole
keymap="ru.koi8-r"
font8x8="cp866-8x8"
font8x14="cp866-8x14"
font8x16="cp866b-8x16"
scrnmap="koi8-r2cp866"
cursor="destructive"
#
gateway_enable="YES"
natd_enable="YES"
natd_interface="em0"
natd_flags="-dynamic -m"
named_enable="YES"
firewall_enable="YES"
#firewall_type="open"
firewall_script="/etc/firewall.conf"
firewall_logging="YES"
dummynet_enable="YES"
#
squid_enable="YES"
clear_tmp_enable="YES"
rinetd_enable="YES"
proftpd_enable="YES"

firewall.conf
!/bin/sh
cmd="ipfw -q add"
skip="skipto 500"
pif="em0"
ks="keep-state"
good_tcpo="21,22,23,25,37,43,53,80,443,110,3389"
goodip202="10.180.xx.0/24{139,119,20,132,136,157,159,16,161,181,194,21,228,230,
natdip="10.180.xx.0/24{99,119,159,16,47,181}"
natdicmp="10.180.xx.0/24{20,159,16,47,181,95,99}"
down1024="10.180.xx.0/24{47}"
up512="10.180.xx.0/24{47}"
ipfw -q -f flush
ipfw -f pipe flush
#
################################################################################
$cmd 100 allow  all from $goodip202 to any  via xl0
$cmd 110 allow  all from any to any via lo0
$cmd 111 allow  tcp from xxx.info to me 3390 in via $pif setup $ks
$cmd 111 allow  tcp from xxx.com to me 3389 in via $pif setup $ks
$cmd 111 allow  tcp from xxxx.com to me 1433 in via $pif setup $ks  
#
#NAT IN
$cmd 200 divert natd ip from any to any in via $pif
$cmd 210 check-state
#limit
################################################################################
ipfw add 220 pipe 1 ip from any to $1024 out via xl0 #download
ipfw add 230 pipe 2 ip from $512 to any  in  via xl0 #up
ipfw   pipe 1 config bw 256Kbit/s
ipfw   pipe 2 config bw 256Kbit/s
################################################################################
#out
################################################################################
#dns  for LAN
$cmd 300 $skip  udp from any to any 53  out via $pif $ks
$cmd 310 $skip  tcp from any to any 53  out via $pif setup $ks
#DNS for Server
$cmd 300 allow  udp from any to any 53  out via $pif $ks
$cmd 310 allow  tcp from any to any 53  out via $pif setup $ks
#internet for LAN
$cmd 320 $skip  tcp from $natdip to any $good_tcpo out via $pif setup $ks
#icmp for lan
$cmd 330 $skip  icmp from $natdicmp to any out via $pif $is
#Internet for SERVER
$cmd 340 allow icmp from xxxxxx to any out via $pif $ks
$cmd 340 allow  all from me to any out via $pif setup $ks
###############################################################################
################################################################################
#dns  for LAN
$cmd 300 $skip  udp from any to any 53  out via $pif $ks
$cmd 310 $skip  tcp from any to any 53  out via $pif setup $ks
#DNS for Server
$cmd 300 allow  udp from any to any 53  out via $pif $ks
$cmd 310 allow  tcp from any to any 53  out via $pif setup $ks
#internet for LAN
$cmd 320 $skip  tcp from $natdip to any $good_tcpo out via $pif setup $ks
#icmp for lan
$cmd 330 $skip  icmp from $natdicmp to any out via $pif $ks
#Internet for SERVER
$cmd 340 allow icmp from xxxxxxxx to any out via $pif $ks
$cmd 340 allow  all from me to any out via $pif setup $ks
###############################################################################
#in
################################################################################
#ping na server
$cmd 400 allow  icmp from any to xxxxxxxxx in via $pif  limit src-addr 2
#ssh in
$cmd 410 allow  tcp from any to me 22 in via $pif setup limit src-addr 2
#ftp in
$cmd 420 allow  tcp from any to me 21 in via $pif setup
$cmd 430 allow  tcp from me 20 to any out via $pif setup
#Passive ftp
#$cmd 451 allow  tcp from any to any 49152-65534  in via $pif setup #randomports
#

$cmd 499 deny log all from any to any


#NAT OUT
$cmd 500 divert natd  ip from any to any out via $pif
$cmd 510 allow  ip from any to any

# ipfw show
00100  5244 2811582 allow ip from 10.180.xxx.0/24{16,20,21,37,47,69,76,78,95,99,119,132,136,139,157,159,161,181,194,228,230,239,246} to any via xl0
00110     0       0 allow ip from any to any via lo0
00111  1519  750014 allow tcp from 77.34.88.205 to me dst-port 3390 in via em0 setup keep-state
00111     0       0 allow tcp from 77.35.157.150 to me dst-port 3389 in via em0 setup keep-state
00111     0       0 allow tcp from 77.35.157.150 to me dst-port 1433 in via em0 setup keep-state
00200  1106   92861 divert 8668 ip from any to any in via em0
00210     0       0 check-state
00220     0       0 pipe 1 ip from any to 0.0.0.20 out via xl0
00230     0       0 pipe 2 ip from 0.0.0.12 to any in via xl0
00300    94   16366 skipto 500 udp from any to any dst-port 53 out via em0 keep-state
00300     0       0 allow udp from any to any dst-port 53 out via em0 keep-state
00310     0       0 skipto 500 tcp from any to any dst-port 53 out via em0 setup keep-state
00310     0       0 allow tcp from any to any dst-port 53 out via em0 setup keep-state
00320   514   80255 skipto 500 tcp from 10.180.xxx.0/24{16,47,99,119,159,181} to any dst-port 21,22,23,25,37,43,53,80,443,110,3389 out via em0 setup keep-state
00330  2442  146520 skipto 500 icmp from 10.180.xxx.0/24{16,20,47,95,99,159,181} to any out via em0 keep-state
00340     0       0 allow icmp from xxxxxxx to any out via em0 keep-state
00340  2507 1950437 allow ip from me to any out via em0 setup keep-state
00400     0       0 allow icmp from any to xxxxxxx in via em0 limit src-addr 2
00410   915  160356 allow tcp from any to me dst-port 22 in via em0 setup limit src-addr 2
00420     0       0 allow tcp from any to me dst-port 21 in via em0 setup
00430     0       0 allow tcp from me 20 to any out via em0 setup
00499 11896 1073981 deny log logamount 100 ip from any to any
00500  1036   76469 divert 8668 ip from any to any out via em0
00510  3050  243141 allow ip from any to any
00999     0       0 deny log logamount 100 ip from any to any
65535    34    2862 allow ip from any to any
ipfw pipe show
00001: 256.000 Kbit/s    0 ms burst 0
q131073  50 sl. 0 flows (1 buckets) sched 65537 weight 0 lmax 0 pri 0 droptail
sched 65537 type FIFO flags 0x0 0 buckets 0 active
00002: 256.000 Kbit/s    0 ms burst 0
q131074  50 sl. 0 flows (1 buckets) sched 65538 weight 0 lmax 0 pri 0 droptail
sched 65538 type FIFO flags 0x0 0 buckets 0 active

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от aurved on 16-Апр-14, 22:22 
00220     0       0 pipe 1 ip from any to 0.0.0.20 out via xl0
00230     0       0 pipe 2 ip from 0.0.0.12 to any in via xl0

какие интересные адреса 0.0.0.20 и 0.0.0.12 заруливаются в трубы  -- это что вообще такое?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от sbrfrf email(ok) on 17-Апр-14, 00:54 
> 00220     0      
> 0 pipe 1 ip from any to 0.0.0.20 out via xl0
> 00230     0      
> 0 pipe 2 ip from 0.0.0.12 to any in via xl0
> какие интересные адреса 0.0.0.20 и 0.0.0.12 заруливаются в трубы  -- это
> что вообще такое?

тоже это заметил, подумал такой формат у пайп что на своём написал, но
попробовал вставить вместо переменной с адресами ип адрес
так по шоу пайп эти нули. Откуда они могут браться? Посмотрите у кого 9.2 версия задайте пару пайпов и шоу сделайте что будет написано?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от Дум Дум on 17-Апр-14, 08:27 
>ipfw add 220 pipe 1 ip from any to $1024 out via xl0 #download
>ipfw add 230 pipe 2 ip from $512 to any  in  via xl0 #up

...
down1024="10.180.xx.0/24{47}"
up512="10.180.xx.0/24{47}"
...
ipfw add 220 pipe 1 ip from any to $down1024 out via xl0 #download
ipfw add 230 pipe 2 ip from $up512 to any  in  via xl0 #up

Не?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от sbrfrf (ok) on 17-Апр-14, 10:05 
>[оверквотинг удален]
>>ipfw add 230 pipe 2 ip from $512 to any  in  via xl0 #up
> ...
> down1024="10.180.xx.0/24{47}"
> up512="10.180.xx.0/24{47}"
> ...
> ipfw add 220 pipe 1 ip from any to $down1024 out via
> xl0 #download
> ipfw add 230 pipe 2 ip from $up512 to any  in
>  via xl0 #up
> Не?

Ну конечно да, описка вышла видно когда ип адреса подставлял разные варианты проверял.
подправил  
ipfw add 220 pipe 1 ip from any to $down1024 out via xl0 #download
ipfw add 230 pipe 2 ip from $up512 to any  in  via xl0 #up
ipfw   pipe 1 config bw 256Kbit/s
ipfw   pipe 2 config bw 256Kbit/s

                 1.91Mb            3.81Mb             5.72Mb            7.63Mb       9.54Mb
└─────────────────┴─────────────────┴──────────────────┴─────────────────┴─────────────
++++++++++++++++
10.180.202.20                    => 10.180.202.47                     699Kb   827Kb   775Kb
iftop показывает скачку на уровне двух мегабит 31 мегабайт файл скачался за 2,5 минуты.

ipfw pipe show
00001: 256.000 Kbit/s    0 ms burst 0
q131073  50 sl. 0 flows (1 buckets) sched 65537 weight 0 lmax 0 pri 0 droptail
sched 65537 type FIFO flags 0x0 0 buckets 0 active
00002: 256.000 Kbit/s    0 ms burst 0
q131074  50 sl. 0 flows (1 buckets) sched 65538 weight 0 lmax 0 pri 0 droptail
sched 65538 type FIFO flags 0x0 0 buckets 0 active


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от Дум Дум on 17-Апр-14, 13:24 
> down1024="10.180.xx.0/24{47}"
> up512="10.180.xx.0/24{47}"

однако, намекают, что в пайпы попадут только пакеты из/в 10.180.47.0/24. Не?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от sbrfrf email(ok) on 17-Апр-14, 13:38 
>> down1024="10.180.xx.0/24{47}"
>> up512="10.180.xx.0/24{47}"
> однако, намекают, что в пайпы попадут только пакеты из/в 10.180.47.0/24. Не?

ХХ это просто закрыл реальный адрес.
в пайп попадет адрес 47 из моей 10.180.1.0
пока только 47 адрес если заработает пайп то
через запятую укажу остальные компьютеры
требующие ограничение скорости.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от Дум Дум on 17-Апр-14, 13:58 
И по 'ipfw show'  в pipe закачка попадает? Или цепляется за 100-е правило?

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от sbrfrf email(ok) on 17-Апр-14, 14:27 
> И по 'ipfw show'  в pipe закачка попадает? Или цепляется за
> 100-е правило?

ipfw show сейчас так
....
00200  51888  22351895 divert 8668 ip from any to any in via em0
00210      0         0 check-state
00220      0         0 pipe 1 ip from any to 10.180.202.0/24{47} out via xl0
00230      0         0 pipe 2 ip from 10.180.202.0/24{47} to any in via xl0
00300   5929    808235 skipto 500 udp from any to any dst-port 53 out via em0 keep-state
00300      0         0 allow udp from any to any dst-port 53 out via em0 keep-state
......

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от Дум Дум on 17-Апр-14, 16:15 
Ну так под сотое правило
allow ip from 10.180.xxx.0/24{16,20,21,37,47,69,76,78,95,99,119,132,136,139,157,159,161,181,194,228,230,239,246} to any via xl0
приведённая выше закачка
0.180.202.20                    => 10.180.202.47
разве не попадает?
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от sbrfrf email(ok) on 17-Апр-14, 16:19 
> Ну так под сотое правило
> allow ip from 10.180.xxx.0/24{16,20,21,37,47,69,76,78,95,99,119,132,136,139,157,159,161,181,194,228,230,239,246}
> to any via xl0
> приведённая выше закачка
> 0.180.202.20            
>         => 10.180.202.47
> разве не попадает?

попадает а что это дает?

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от Дум Дум on 17-Апр-14, 16:31 
>> Ну так под сотое правило
>> allow ip from 10.180.xxx.0/24{16,20,21,37,47,69,76,78,95,99,119,132,136,139,157,159,161,181,194,228,230,239,246}
>> to any via xl0
>> приведённая выше закачка
>> 0.180.202.20
>>         => 10.180.202.47
>> разве не попадает?
> попадает а что это дает?

При one.pass=1, что дальше проверяться не будет. Или он =0?

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от sbrfrf email(ok) on 17-Апр-14, 16:46 
>>> Ну так под сотое правило
>>> allow ip from 10.180.xxx.0/24{16,20,21,37,47,69,76,78,95,99,119,132,136,139,157,159,161,181,194,228,230,239,246}
>>> to any via xl0
>>> приведённая выше закачка
>>> 0.180.202.20
>>>         => 10.180.202.47
>>> разве не попадает?
>> попадает а что это дает?
> При one.pass=1, что дальше проверяться не будет. Или он =0?

Не пойму про что ты щас виртуалки запущу посмотрю, может не срабатывает ограничение из за того что на виртуальных машинах моделирую ситуацию, а 9 версия не очень хорошо на виртуалке работает.
Где посмотреть one.pass=1 ?

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от Дум Дум on 17-Апр-14, 17:03 
>[оверквотинг удален]
>>>> приведённая выше закачка
>>>> 0.180.202.20
>>>>         => 10.180.202.47
>>>> разве не попадает?
>>> попадает а что это дает?
>> При one.pass=1, что дальше проверяться не будет. Или он =0?
> Не пойму про что ты щас виртуалки запущу посмотрю, может не срабатывает
> ограничение из за того что на виртуальных машинах моделирую ситуацию, а
> 9 версия не очень хорошо на виртуалке работает.
> Где посмотреть one.pass=1 ?

sysctl -a|grep one_pass

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от sbrfrf email(ok) on 17-Апр-14, 17:09 
>[оверквотинг удален]
>>>>> 0.180.202.20
>>>>>         => 10.180.202.47
>>>>> разве не попадает?
>>>> попадает а что это дает?
>>> При one.pass=1, что дальше проверяться не будет. Или он =0?
>> Не пойму про что ты щас виртуалки запущу посмотрю, может не срабатывает
>> ограничение из за того что на виртуальных машинах моделирую ситуацию, а
>> 9 версия не очень хорошо на виртуалке работает.
>> Где посмотреть one.pass=1 ?
> sysctl -a|grep one_pass

net.inet.ip.fw.one_pass: 1
стоит 1Когда установлено, пакет, выходящий из потока dummynet, не проходит через брандмауэр повторно, В противном случае, после обработки канала пакет повторно вводится в брандмауэр по следующему правилу.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от Дум Дум on 17-Апр-14, 19:01 
>[оверквотинг удален]
>>>> При one.pass=1, что дальше проверяться не будет. Или он =0?
>>> Не пойму про что ты щас виртуалки запущу посмотрю, может не срабатывает
>>> ограничение из за того что на виртуальных машинах моделирую ситуацию, а
>>> 9 версия не очень хорошо на виртуалке работает.
>>> Где посмотреть one.pass=1 ?
>> sysctl -a|grep one_pass
> net.inet.ip.fw.one_pass: 1
> стоит 1Когда установлено, пакет, выходящий из потока dummynet, не проходит через брандмауэр
> повторно, В противном случае, после обработки канала пакет повторно вводится в
> брандмауэр по следующему правилу.

Да. Не при чём. По 100-му правилу: пакет обрабатывается первым подходящим правилом и выходит из проверки. http://nuclight.livejournal.com/124348.html

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

16. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от sbrfrf (ok) on 18-Апр-14, 07:25 
>[оверквотинг удален]
>>>> ограничение из за того что на виртуальных машинах моделирую ситуацию, а
>>>> 9 версия не очень хорошо на виртуалке работает.
>>>> Где посмотреть one.pass=1 ?
>>> sysctl -a|grep one_pass
>> net.inet.ip.fw.one_pass: 1
>> стоит 1Когда установлено, пакет, выходящий из потока dummynet, не проходит через брандмауэр
>> повторно, В противном случае, после обработки канала пакет повторно вводится в
>> брандмауэр по следующему правилу.
> Да. Не при чём. По 100-му правилу: пакет обрабатывается первым подходящим правилом
> и выходит из проверки. http://nuclight.livejournal.com/124348.html

Поставил в net.inet.ip.fw.one_pass: 0, правила поднял наверх, ограничение стало работать.
Спасибо.
#################################################################################
#ipfw add 90  pipe 1 ip from any to $down1024 out via xl0 #download
#ipfw add 90  pipe 2 ip from $up512 to any  in  via xl0 #up
#ipfw   pipe 1 config bw 512Kbit/s
#ipfw   pipe 2 config bw 512Kbit/s
#################################################################################
$cmd 100 allow  all from $goodip202 to any  via xl0
$cmd 110 allow  all from any to any via lo0
#################################################################################

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

17. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от Дум Дум on 18-Апр-14, 08:06 

> Поставил в net.inet.ip.fw.one_pass: 0, правила поднял наверх, ограничение стало работать.

Достаточно было поднять правило наверх. one_pass=1 - пакет попал в правило ната, правило его обрабатывает и пакет выпускается, как разрешённый. one_pass=0 - после изменения пакета в правиле ната, пакет возвращается в проверку на следующее (по номеру!) правило и должен быть где-то дальше разрешён, чтобы пройти.

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

18. "ipfw + pipe Отказывается рабоатать"  +/
Сообщение от sbrfrf email(ok) on 18-Апр-14, 15:42 
>> Поставил в net.inet.ip.fw.one_pass: 0, правила поднял наверх, ограничение стало работать.
> Достаточно было поднять правило наверх. one_pass=1 - пакет попал в правило ната,
> правило его обрабатывает и пакет выпускается, как разрешённый. one_pass=0 - после
> изменения пакета в правиле ната, пакет возвращается в проверку на следующее
> (по номеру!) правило и должен быть где-то дальше разрешён, чтобы пройти.

ну как достаточно, я его ставил на самый верх. Сейчас проверил  стоит net.inet.ip.fw.one_pass: 1,
правило сверху 90 сделал до ната, Ограничение не сработало. Я понял эту логику что если 0 то можно и не поднимать до моего правила дойдет и ограничение включится. так как по умолчанию 1 то до ограничение не доходит и надо поднять наверх.  Но поднятием не обойтись получается.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру