Есть прозрачный сквид.
Есть pf + ipfw
на pf редир на сквид:
rdr pass on $int_if inet proto tcp from $internal_addr to !192.168.0.0/24 port { 80, 3128, 8000, 8080 } -> 192.168.0.100 port 3128
и НАТ:
nat on fxp0 from 192.168.0.0/24 to any -> 77.88......
на ipfw разделение канала на мир и ЮА(так как мир медленный и на всех качателей не хватит, а на отдельных задротов торрентеров вообще никакого нета не хватит
)
ipfw list
00100 allow ip from any to any via lo0
00200 deny ip from any to 127.0.0.0/8
00270 pipe 510 ip from table(10,510) to table(29,512) out via sk0
00280 pipe 512 ip from table(29,512) to any in via sk0
00290 pipe 513 ip from not table(29,512) to table(29,512) out via sk0
00300 deny ip from 127.0.0.0/8 to any
65000 allow ip from any to any
65535 allow ip from any to any
кусок конфы...
#исход
/sbin/ipfw pipe 512 config bw 128Kbit/s mask src-ip 0xFFFFFFFF
/sbin/ipfw pipe 513 config bw 256Kbit/s mask dst-ip 0xFFFFFFFF
#вход из UA
${ipfw} pipe 510 config bw 2Mbit/s mask dst-ip 0xFFFFFFFF
${ipfw} add 270 pipe 510 ip from "table(10,510)" to "table(29,512)" out via sk0
/sbin/ipfw add 280 pipe 512 ip from "table(29,512)" to any in via sk0
/sbin/ipfw add 290 pipe 513 ip from not "table(29,512)" to "table(29,512)" out via sk0
таблица 29 - локальные ИПшки, 10я - ЮА
Проблема:
Пакеты с инета к локальному клиенту прошедшие сквид(хоть он и прозрачный) и НАТ, не могут быть классифицированы и распиханы в пайпы, так как они уже по идее идут с локалки в локалку.
нужно:
каждому ИП гарантированно 128Кбит + сколько есть свободно (динамика) по миру
и так же по ЮА..
+ приоритеты по портам (сетевые игры)
Кто поможет переписать все на ПФ(RED + borrow или еще чего там) без ипфв = многим будет полезно + от меня не много но WMZ\U\R\E
и на последок
uname -a
FreeBSD ххх.kiev.ua 7.0-RELEASE-p5 FreeBSD 7.0-RELEASE-p5 #0: Mon Nov 10 15:09:16 EET 2008 ххх.kiev.ua:/usr/obj/usr/src/sys/GENERIC.last.ok
ifconfig 22:58 ttyp1
sk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_MTU>
ether 00:13:d4:ad:a7:de
inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255
media: Ethernet autoselect (1000baseTX <full-duplex,flag0,flag1>)
status: active
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_MTU>
ether 00:02:b3:8b:12:ab
inet 77.88..... netmask 0xfffffffc broadcast 77.88.......
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000