Перейти к содержимому
Калькуляторы

freebsd ipfw pipe

Коллеги, подскажите пожалуйста, бьюсь второй день...вроде простецкая штука, но не пойму где ошибка.

 

net.inet.ip.fw.one_pass: 1

 

Есть правила:

01200  86451  71347065 pipe tablearg ip from any to table(60) out
01200  99906  83939062 pipe tablearg ip from table(61) to any in
01201  86448  71340868 allow ip from any to table(60)
01201  99889  83947427 allow ip from table(60) to any

pipы все настроены идиентично:

${fwcmd} pipe 5 config bw 35Mbit/s mask dst-ip 0xffffffff
${fwcmd} pipe 6 config bw 35Mbit/s mask src-ip 0xffffffff

в таблице 60 IP адрес указан так:

10.1.19.160/32 5

в таблице 61:

10.1.19.160/32 6

# ipfw pipe 5 list

00005:  35.000 Mbit/s    0 ms burst 0
q131077  50 sl. 0 flows (1 buckets) sched 65541 weight 0 lmax 0 pri 0 droptail
sched 65541 type FIFO flags 0x1 64 buckets 5 active
   mask:  0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
162 ip           0.0.0.0/0         10.1.19.160/0        1      109  0    0   0

# ipfw pipe 6 list

00006:  35.000 Mbit/s    0 ms burst 0
q131078  50 sl. 0 flows (1 buckets) sched 65542 weight 0 lmax 0 pri 0 droptail
sched 65542 type FIFO flags 0x1 64 buckets 9 active
   mask:  0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
65 ip       10.1.19.160/0             0.0.0.0/0        1      137  0    0   0

Без правила 1201 отказывается работать, а ведь должно...pipe должен выбросить его из трубы, он же работает как allow.

Если удалить 1201 правило, счетчик у правила 1200 (которое out) перестает двигаться...

Изменено пользователем kirush

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

01150 12824  8986179 pipe tablearg ip from any to table(60) out
01160 15028 14026504 pipe tablearg ip from table(61) to any in
01201 12825  8981935 allow ip from any to table(60)
01201 15031 14030272 allow ip from table(60) to any

не помогло

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У вас правила pipe указаны с направлением, а allow на все направления.

Проверьте не пропадают ли пакеты

any to table(60) на направлении in

и table(61) to any на направлении out

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тык в том то и дело, что allow там не должно быть вообще, но как убираю pipe перестает работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тык в том то и дело, что allow там не должно быть вообще, но как убираю pipe перестает работать.

Еще раз.

У вас pipe пропускает пакеты только в одном направлении. Вам надо кроме этого разрешить пакеты в другом направлении.

 

Попробуйте два правила поменять на:

01201 12825 8981935 allow ip from any to table(60) in

01201 15031 14030272 allow ip from table(60) to any out

 

И посмотрите будет ли работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, приведите весь список. Если в конце есть deny ip from any to any то в Вашей раскладке выходной трафик туда и сложится. если Вы pipe замените на count то счетчик на count будет в 2 раза ниже чем на allow. у Вас они равны потому что входящий трафик разрешился pipe и до allow не дошел, а исходящий попал только в allow. 1 транзитный пакет проходит 2 раза по правилам, на входе в машину и на выходе.

 

если убрать in и out из правил pipe, то скорость станет в 2 раза ниже заявленной :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

# ipfw show

00001 30122 2828764 allow ospf from any to any

00010 33422 3460655 deny ip from any to table(50) dst-port 135-139,445

00010 6700 552530 deny ip from table(50) to any dst-port 135-139,445

00050 1324177 166431991 allow ip from table(50) to my-net/23

00050 1027774 192434806 allow ip from my-net/23 to table(50)

00060 157669 11263751 allow ip from 172.16.0.0/16 to 10.0.0.0/8

00060 3842257 328948472 allow ip from 10.0.0.0/8 to 172.16.0.0/16

00099 2690376 702343787 allow ip from any to any via lo0

00180 104370865 66681957613 allow ip from 10.1.0.0/16 to 10.1.0.0/16

00210 3672674 476564516 allow ip from 172.16.0.0/16 to 172.16.0.0/16

00240 155673 9706629 allow ip from any to me

00250 3085836 94248152 allow ip from me to any

01000 161226579 73425610756 allow ip from table(100) to any

01000 188625877 208353611341 allow ip from any to table(100)

01100 17813903 20825826980 allow ip from table(101) to any

01100 15043905 9827671660 allow ip from any to table(101)

01150 96684897 82647815844 pipe tablearg ip from any to table(60) out

01160 94967696 64529071170 pipe tablearg ip from table(61) to any in

01201 96707738 82647363895 allow ip from any to table(60)

01202 94954100 64518722272 allow ip from table(61) to any

01202 0 0 allow ip from table(61) to any

02800 38356 6263386 fwd 127.0.0.1,8080 tcp from table(1) to any dst-port 80

02900 0 0 allow ip from table(1) to table(30)

02900 0 0 allow ip from table(30) to table(1)

03000 53953 24607276 pipe 1 ip from any to table(1)

03000 27591 4523082 pipe 2 ip from table(1) to any

03100 90 4950 fwd 127.0.0.1,8081 tcp from table(2) to any dst-port 80

03100 39658 2430453 pipe 1 ip from any to table(2)

03100 0 0 pipe 2 ip from table(2) to any

03200 0 0 allow ip from table(2) to table(30)

03200 0 0 allow ip from table(30) to table(2)

65535 523893 48113378 deny ip from any to any

Сейчас выглядит это так...

 

те правильно будет (мне надо резать как исходящую так и входящую):

 

pipe tablearg ip from any to table(60) out
allow ip from table(60) to any
pipe tablearg ip from table(61) to any in
allow ip from any to table(61)

?

Изменено пользователем kirush

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

входящий с, точки зрения его получателя, все равно сначала будет in (на внешнем интерфейсе) с точки зрения машины, а потом out (на внутреннем интерфейсе). Исходящий тоже сначала будет in (на внутреннем интерфейсе) а потом out (на внешнем). и в правилах именно эти IN и OUT фигурируют. Вы, вашем правиле in и out можете поставить хоть везде in хоть везде out хоть наоборот. Все равно тот же трафик в ту же трубу попадет. только не на, к примеру, внешнем интерфейсе, а на внутреннем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

те правильно будет (мне надо резать как исходящую так и входящую):

 

pipe tablearg ip from any to table(60) out
allow ip from table(60) to any
pipe tablearg ip from table(61) to any in
allow ip from any to table(61)

?

Да.

 

Вот тут можно попробовать почитать почему так и как происходит:

http://nuclight.livejournal.com/124348.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.