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

pf+ipfw shaping

Добавлено: 2013-02-08 14:45:50
Exaile
FreeBSD 9.1-RELEASE FreeBSD 9.1-RELEASE #4: Thu Feb 7 17:03:02 MSK 2013 :/usr/obj/usr/src/sys/KERNEL amd64

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

PF:

ext_if="igb0"
int_if="igb1"

nat on $ext_if inet from 192.168.123.27 to any -> x.x.x.x (alias1)
rdr on $ext_if inet from any to x.x.x.x -> 192.168.123.27

rc.conf

ifconfig_igb0="inet y.y.y.y/22"

ifconfig_igb0_alias0="inet y.y.y.y/22"
ifconfig_igb0_alias1="inet x.x.x.x/24"
ifconfig_igb0_alias2="inet x.x.x.x/24"

ifconfig_igb1="inet 192.168.253.252/24"
vlans_igb1="123"
ifconfig_igb1_123="inet 192.168.123.252/24"

defaultrouter="x.x.x.x"
static_routes="local"
route_local="-net 192.168.0/8 192.168.253.254"

x.x.x.x разные выделенные белые адреса для выделенного ната пользователям.

ifconfig -a

igb0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=400b8<VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM, VLAN_HWTSO>
ether 00:24:45:81:у5:7b
inet y.y.y.y netmask 0xfffffc00 broadcast y.y.y.255
inet y.y.y.y netmask 0xfffffc00 broadcast y.y.y.255
inet x.x.x.x netmask 0xffffff00 broadcast x.x.x.255
inet x.x.x.x netmask 0xffffff00 broadcast x.x.x.255
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active

igb1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=400b8<VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM, VLAN_HWTSO>
ether 00:24:45:81:у5:7e
inet 192.168.253.252 netmask 0xffffff00 broadcast 192.168.123.255
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active

pflog0: flags=100<PROMISC> metric 0 mtu 33152

pfsync0: flags=0<> metric 0 mtu 1500
syncpeer: 0.0.0.0 maxupd: 128

ipfw0: flags=8800<SIMPLEX,MULTICAST> metric 0 mtu 65536

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
inet 127.0.0.1 netmask 0xff000000

igb1.123: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 00:26:55:80:b5:7b
inet 192.168.123.252 netmask 0xffffff00 broadcast 192.168.123.255
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
vlan: 123 parent interface: igb1
Подскажите, как зашейпить средствами ipfw pipe только внешний входящий и исходящий канал для конкретного пользователя который выходит в инет cо 192.168.123.27 и натиться под одним из x.x.x.x ?

Пробовал так, но не срабатывает. Возможно тут надо использовать skipto или что то конкретное out,in,via, xmit,recv + интерфейсы?

ipfw pipe 1 config bw 1024Kbit/s mask dst-ip 0xffffffff

ipfw pipe 2 config bw 1024Kbit/s mask src-ip 0xffffffff

ipfw add 1 pipe 1 ip from any to table\(1,1024\) via

ipfw add 2 pipe 2 ip from table\(2,1024\) to any via

ipfw table 1 add x.x.x.x 1024

ipfw table 2 add x.x.x.x 1024

P.S. queue не нужны, просто шейпинг.

Re: pf+ipfw shaping

Добавлено: 2013-02-08 15:42:55
Exaile
с шейпингом разобрался, сделал так:

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

ipfw pipe 1 config bw 4096Kbit/s mask src-ip 0xffffffff
ipfw pipe 2 config bw 4096Kbit/s mask dst-ip 0xffffffff

ipfw add 1 pipe tablearg ip from table(12) to any out via igb0
ipfw add 2 pipe tablearg ip from any to table\(13\) in via igb0


ipfw table 12 add x.x.x.x/32 1
ipfw table 13 add x.x.x.x/32 2
Только в момент замера скорости на speedtest или через iperf очень сильно повышается время мс когда пингую внешку.

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

Ответ от 213.180.204.3: число байт=32 время=3мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=3мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=7мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=130мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=117мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=132мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=135мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=126мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=130мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=81мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=61мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=3мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=3мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=3мс TTL=55
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Ответ от 213.180.204.3: число байт=32 время=3мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=2мс TTL=55
Ответ от 213.180.204.3: число байт=32 время=2мс TTL=55
Вопрос - это нормально, при зарезании в 4096 килобит ? Когда ставлю 100 мбит то по пингам всё норм.

Re: pf+ipfw shaping

Добавлено: 2013-02-13 10:04:24
Exaile
Пытаюсь сделать так:

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

ipfw pipe 14 config bw 4096Kbit/s mask src-ip 0xffffffff
ipfw pipe 15 config bw 4096Kbit/s mask dst-ip 0xffffffff

ipfw add 14 pipe tablearg ip from table\(14\) to any in via igb0
ipfw add 15 pipe tablearg ip from any to table\(15\) out via igb0

ipfw table 14 add x.x.x.x 14
ipfw table 15 add x.x.x.x 15

ipfw sh:

ipfw: DEPRECATED: 'sh' matched 'show' as a sub-string
00001 1617 1204920 pipe tablearg ip from table(1) to any in via igb1.123
00002 1773 1627110 pipe tablearg ip from any to table(2) out via igb1.123
00014 0 0 pipe tablearg ip from table(14) to any in via igb0
00015 0 0 pipe tablearg ip from any to table(15) out via igb0
65534 19370 5606832 allow ip from any to any
65535 0 0 deny ip from any to any
Счётчики по нулям...

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

ipfw pipe show
00001: 1.024 Mbit/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 0x1 65536 buckets 1 active
mask: 0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
87 ip 192.168.123.27 /0 0.0.0.0/0 202 12289 0 0 0
00002: 1.024 Mbit/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 0x1 65536 buckets 1 active
mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
37 ip 0.0.0.0/0 192.168.123.27 /0 37 2220 0 0 0
00014: 4.096 Mbit/s 0 ms burst 0
q131086 50 sl. 0 flows (1 buckets) sched 65550 weight 0 lmax 0 pri 0 droptail
sched 65550 type FIFO flags 0x1 65536 buckets 0 active
mask: 0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
00015: 4.096 Mbit/s 0 ms burst 0
q131087 50 sl. 0 flows (1 buckets) sched 65551 weight 0 lmax 0 pri 0 droptail
sched 65551 type FIFO flags 0x1 65536 buckets 0 active
mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
Что не так ? В пайпах 1 и 2 на локальный ип 192.168.123.27 работает шейпинг.