Показать полную графическую версию : ipfw скрипт для шлюза, корректно работающий с торрент-траффиком
машина верой и правдой служит в качестве шлюза.
ОС: FreeBSD 6
Файр: в ipfw
прокси: Squid
Возникла необходимость пробросить торрент траффик на одну машину в локалке.
Цель - пропустить и ограничить (чтоб не кушал больше положенного) торрент траффик.
Торрент траффик желательно пропустить вне прокси.
основа для конфигурации ipfw скрипта, пробрасывающего торрент-траффик взята здесь:
http://www.opennet.ru/openforum/vsluhforumID12/5247.html
основа для конфигурации ipfw скрипта, для работы с прокси взята здесь:
http://www.opennet.ru/base/net/freebsd_gw2.txt.html
Проблема в том, что приведенные конфиги ipfw работоспособны в отдельности, но несовместимы.
Помогите, пожалуста.
Какие еще существуют варианты проброса торрент-траффика сквозь шлюз?
Снова вернулся к этой теме.
Составил список городских домашних сетей, пользователи которых пользуются торрен-сервисом (в данном случае это внутренний ресурс)
Есть идея разделить весь входящий и исходящий траффик по принадлежности IP.
Но IP адреса WEB серверов находятся в том же диапазоне, что и клиенты торрента.
Как можно в ipfw описать диапазон IP адресов (причем немаленький диапазон) исключив из него несколько IP?
WhitePangolin
04-02-2009, 16:23
используйте оператор not
ну в PF например можно создать таблицу, которая содержит список подсетей и исключить из нее опредеоенный ИП. Пример
table <goodguys> { 192.0.2.0/24, !192.0.2.5 }
Содержимое таблицы можно брать из файла:
table <spammers> persist file "/etc/spammers"
block in on fxp0 from <spammers> to any
Я думаю что в IPFW тоже можно чтото подобное сделать. только вот как.... . нужно в мануале пошукать.
WhitePangolin, если вас не затруднит, то пожалуйста, приведите корректный пример для сети 192.168.10.0
IP адреса, которые нужно исключить 192.168.10.101 и 192.168.10.10
нигде ничего не смог найти с NOT.
Кто-нить использовал tables?
корректен ли такой вариант:
ipfw table 3 add 192.168.10.0
ipfw table 3 delete 192.168.10.10
ipfw table 3 delete 192.168.10.101
cluber, в принципе я думаю правильно. но проще как в мане написано
If you administer one or more subnets, you can take advantage of the
address sets and or-blocks and write extremely compact rulesets which
selectively enable services to blocks of clients, as below:
goodguys="{ 10.1.2.0/24{20,35,66,18} or 10.2.3.0/28{6,3,11} }"
badguys="10.1.2.0/24{8,38,60}"
ipfw add allow ip from ${goodguys} to any
ipfw add deny ip from ${badguys} to any
... normal policies ...
WhitePangolin
05-02-2009, 08:30
Создаем white.list с содержанием:
192.168.10.10
192.168.10.101
в правилах пишем:
${ipfw} table 100 flush
for net in `cat white.list`; do
${ipfw} table 100 add $net
done
${ipfw} add deny all from any to not table\(100\)
В результате рубим все что идет не на адреса перечисленные в белом списке.
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
Теоретически должно работать, но на практике не хочет :(
Может, свежий взгляд человека понимающего уловит, что здесь не так?
WhitePangolin
06-02-2009, 14:57
#Определяем одну из торрент подсетей (на самом деле их несколько)
# сама сеть
ipfw table 3 add 192.168.10.0
# веб сервера, которые тоже в этой подсети, но в торрент движениях участия не принимают удаляются из списка
ipfw table 3 delete 192.168.10.10
ipfw table 3 delete 192.168.10.101 »
Это работать не должно.
gt# ipfw table 3 add 192.168.10.0
gt# ipfw table 3 list
192.168.10.0/32 0
соответственно стереть можно только весь диапазон, а не отдельный адрес.
Это работать не должно. »
соответственно стереть можно только весь диапазон, а не отдельный адрес. »
Как тогда описать весь диапазон из разных подсетей за вычетом нескольких адресов из кажой?
WhitePangolin
09-02-2009, 12:05
Как тогда описать весь диапазон из разных подсетей за вычетом нескольких адресов из кажой?»
Ну как вариант можно пойти от обратного и описать не сеть за вычетом исключений, а сами исключения, например так:
#Определяем одну из торрент подсетей (на самом деле их несколько)
# сама сеть
#ipfw table 3 add 192.168.10.0
# веб сервера, которые тоже в этой подсети, но в торрент движениях участия не принимают удаляются из списка
ipfw table 3 add 192.168.10.10
ipfw table 3 add 192.168.10.101
#Здесь мы направляем клиентов торрент сетей на набор правил,заточенных специально под это дело
${fwcmd} add 100 scipto 12340 all from not table(3) to any
${fwcmd} add 200 scipto 12340 all from any to not table(3)
»
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.