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

dummynet Проблема с отдачей

Добавлено: 2010-10-09 23:03:26
UxN
Здрасте господа. Имею проблему с dummynet. Не шейпится аплод.

сам скрипт

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

#!/bin/sh
ipfw="/sbin/ipfw"
${ipfw} -q flush
${ipfw} -q pipe flush
${ipfw} -q queue flush
${ipfw} add divert natd all from any to any via vr0
${ipfw} add pipe 2 all from 172.16.7.5 to any out via vr0
${ipfw} pipe 2 config bw 100kbit/s queue 512kbit/s
${ipfw} add pipe 1 all from  any to 172.16.7.5 in via vr0
${ipfw} pipe 1 config bw 1024kbit/s queue 512kbit/s
Перепробовал уже много комбинаций.
Система:

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

uname -a
FreeBSD gemini.local 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Wed Aug  4 23:49:26 EEST 2010     uxn@gemini.local:/usr/obj/usr/src/sys/ROUTE  i386
Настройки dummynet:

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

gemini# sysctl net. | grep dummynet
net.inet.ip.dummynet.io_pkt_drop: 111
net.inet.ip.dummynet.io_pkt_fast: 18345
net.inet.ip.dummynet.io_pkt: 81658
net.inet.ip.dummynet.queue_count: 0
net.inet.ip.dummynet.fsk_count: 2
net.inet.ip.dummynet.si_count: 0
net.inet.ip.dummynet.schk_count: 4
net.inet.ip.dummynet.tick_lost: 0
net.inet.ip.dummynet.tick_diff: -3106
net.inet.ip.dummynet.tick_adjustment: 3117
net.inet.ip.dummynet.tick_delta_sum: -85
net.inet.ip.dummynet.tick_delta: -11
net.inet.ip.dummynet.red_max_pkt_size: 1500
net.inet.ip.dummynet.red_avg_pkt_size: 512
net.inet.ip.dummynet.red_lookup_depth: 256
net.inet.ip.dummynet.expire_cycle: 0
net.inet.ip.dummynet.expire: 1
net.inet.ip.dummynet.debug: 0
net.inet.ip.dummynet.io_fast: 0
net.inet.ip.dummynet.pipe_byte_limit: 1048576
net.inet.ip.dummynet.pipe_slot_limit: 100
net.inet.ip.dummynet.hash_size: 64
Как видно отсюда трафик не попадает на отдачу, а куда то идет.

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

gemini# ipfw show
00100    702    522432 divert 8668 ip from any to any via vr0
00200      0         0 pipe 2 ip from 172.16.7.5 to any out via vr0
00300    352    408387 pipe 1 ip from any to 172.16.7.5 in via vr0
65535 332000 269861754 allow ip from any to any

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

gemini# ipfw pipe show
00001:   1.024 Mbit/s    0 ms burst 0
q131073 512 KB 0 flows (1 buckets) sched 65537 weight 0 lmax 0 pri 0 droptail
 sched 65537 type FIFO flags 0x0 0 buckets 0 active
00002: 100.000 Kbit/s    0 ms burst 0
q131074 512 KB 0 flows (1 buckets) sched 65538 weight 0 lmax 0 pri 0 droptail
 sched 65538 type FIFO flags 0x0 0 buckets 0 active
Я уже даже не знаю что делать(((

Re: dummynet Проблема с отдачей

Добавлено: 2010-10-10 0:48:08
UxN
Ет самое.... еще заметил странность дамминет не шейперит исходящий трафик с внутренной сети... хотя он шейперит исходящий трафик на внешней сети...
Только стоит поменять

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

${ipfw} add pipe 2 all from 172.16.7.5 to any out via vr0
на

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

${ipfw} add pipe 2 all from ${ext_ip} to any out via vr0
как вдруг он начинает шейпить...
Есть подозрение что где то теряется трафик и не попадает в трубу... Или может я не прав??

Re: dummynet Проблема с отдачей

Добавлено: 2010-10-10 11:50:34
hizel
шейпить надо до nat-а и после nat-а в зависимости от направления, это очевидно

Re: dummynet Проблема с отдачей

Добавлено: 2010-10-10 11:54:42
UxN
А что можно сделать? Почему то я грешу на freebsd-8.1. Я его cvsup-ом обновлял с 7.3.

Re: dummynet Проблема с отдачей

Добавлено: 2010-10-10 11:56:44
hizel
почитать вдумчиво документацию и составить правильно правила

вам потом предстоит еще разобратся с новым dummynet :)

Re: dummynet Проблема с отдачей

Добавлено: 2010-10-11 23:05:35
UxN
Спасиба вам большое... Я пере установил систему... а проблема была в правилах (хотя в большинстве примерах так написано)

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

${ipfw} add pipe 2 all from 172.16.7.5 to any out via vr0
${ipfw} pipe 2 config bw 100kbit/s queue 512kbit/s
я почему-то не догадался что 172.16.7.5 находиться внутри, а vr0 внешний интерфейс.

А нужно было сделать так:

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

${ipfw} add pipe 2 all from 172.16.7.5 to any 
${ipfw} pipe 2 config bw 100kbit/s queue 512kbit/s
правда минус в том что нужно вместо any вбивать все кроме внутренней подсети.
У меня вопрос, но уже не по теме. Если есть три сети A- внутренняя, B- внешняя провайдерская и внешняя C. То как сделать чтобы правило было:
ipfw add pipe 2 all from 172.16.7.5 to C and not ( A and B ) ???
Еще раз спасибо!

Re: dummynet Проблема с отдачей

Добавлено: 2010-10-12 4:16:22
Shuriks
Я так понял 172.16.7.5 это адрес интерфейса смотрящего во внутреннюю сеть. Появляется один нюанс. Если эта машина только шлюз в инет, то может и сойдет такой вариант:

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

${ipfw} add pipe 2 all from 172.16.7.5 to any 
${ipfw} pipe 2 config bw 100kbit/s queue 512kbit/s
Но если там еще вертятся другие сервисы типа самбы, фтп, веб, почты и т.д., то ты также рубишь и от них канал в локальную сеть, что не есть гуд. Собственно ты сам ответил на свой вопрос: нужно вбивать что-то вместо any. Но не все адреса кроме локальной сети, а использовать инверсию, в моем случае это так:

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

inet="not 192.168.0.0/16,172.16.0.0/12,10.0.0.0/8,169.254.0.0/16,224.0.0.0/4" 
А потом уж загоняешь в трубу трафик к $inet.

Re: dummynet Проблема с отдачей

Добавлено: 2010-10-12 19:38:25
UxN
СПАСИБО БОЛЬШОЕ)))) ОЧЕНЬ БЛАГОДАРЕН!!!!