leonty, WhitePangolin, здесь смысл не в том, чтобы кого-то запретить или разрешить
А в том, чтобы используя эти, имеющиеся в наличии "педали" разделить весь траффик на "торрент траффик" и "НЕ торрент траффик"
Условия просты: есть несколько городских домашних сетей (для простоты примера рассматриваем только одну)
Все IP машин этой сети рассматриваем как IP потенциальных торрент-клиентов, но в этой же сети есть еще несколько машин ВЕБ серверов которые в торренте не учавствуют.
Траффик с этих нескольких веб серверов и траффик мировой нужно направить FWD-ом на прокси (сквид) а все остальное (домашние сети -минус- веб сервера этих сетей, направить sikp-ом на тот блок, который отвечает за торрент передачу)
Примерно так:
fwcmd="ipfw -q "
lancard="fxp0"
inetcard="fxp1"
peer="192.168.0.148"
lannet="192.168.0.0/24" # внутренняя сеть
#Определяем одну из торрент подсетей (на самом деле их несколько)
# сама сеть
ipfw table 3 add 192.168.10.0
# веб сервера, которые тоже в этой подсети, но в торрент движениях участия не принимают удаляются из списка
ipfw table 3 delete 192.168.10.10
ipfw table 3 delete 192.168.10.101
#Здесь мы направляем клиентов торрент сетей на набор правил,заточенных специально под это дело
${fwcmd} add 100 scipto 12340 all from table(3) to any
${fwcmd} add 200 scipto 12340 all from any to table(3)
Остальные отправляются на сквид
${fwcmd} add 300 fwd 127.0.0.1,3129 tcp from $lannet to any 21,80,443,5190 out via $inetcard
За шлюзом - lannet, там не одна машина, которой нужен интернет, поэтому трансляция НАТ
${fwcmd} add 400 divert natd ip from any to any in via $oif
..........
..........
..........
${fwcmd} add 12300 deny log all from any to any
# счетчик для торрент-клиентов
${fwcmd} add 12340 count
# правила для торрент клиентов
${fwcmd} add 12350 pass all from ${peer} to any in via ${lancard}
${fwcmd} add 12360 divert natd all from ${peer} to any out via ${inetcard}
${fwcmd} add 12370 divert natd all from any to any in via ${inetcard}
${fwcmd} add 12380 pass all from me to any out via ${inetcard}
${fwcmd} add 12390 pass all from any to ${peer} out via ${lancard}
${fwcmd} add 12400 pass all from any to ${peer} in via ${inetcard}
${fwcmd} add 12500 deny log all from any to any
# исходящий NAT (сюда скипим исходящий НЕ Торрент траффик(пропущенная часть))
${fwcmd} add 40500 divert natd ip from any to any out via $oif
# выпускаем пакеты из скипа
${fwcmd} add 40600 allow all from any to any
${fwcmd} add 50000 deny log all from any to any
Теоретически должно работать, но на практике не хочет
Может, свежий взгляд человека понимающего уловит, что здесь не так?