Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по FreeBSD (http://forum.oszone.net/forumdisplay.php?f=10)
-   -   ipfw скрипт для шлюза, корректно работающий с торрент-траффиком (http://forum.oszone.net/showthread.php?t=124758)

cluber 02-12-2008 11:08 969700

ipfw скрипт для шлюза, корректно работающий с торрент-траффиком
 
машина верой и правдой служит в качестве шлюза.

ОС: FreeBSD 6
Файр: в ipfw
прокси: Squid

Возникла необходимость пробросить торрент траффик на одну машину в локалке.

Цель - пропустить и ограничить (чтоб не кушал больше положенного) торрент траффик.
Торрент траффик желательно пропустить вне прокси.

основа для конфигурации ipfw скрипта, пробрасывающего торрент-траффик взята здесь:
http://www.opennet.ru/openforum/vslu...ID12/5247.html

основа для конфигурации ipfw скрипта, для работы с прокси взята здесь:
http://www.opennet.ru/base/net/freebsd_gw2.txt.html

Проблема в том, что приведенные конфиги ipfw работоспособны в отдельности, но несовместимы.

Помогите, пожалуста.

cluber 04-12-2008 09:54 971951

Какие еще существуют варианты проброса торрент-траффика сквозь шлюз?

cluber 04-02-2009 12:12 1029058

Снова вернулся к этой теме.

Составил список городских домашних сетей, пользователи которых пользуются торрен-сервисом (в данном случае это внутренний ресурс)
Есть идея разделить весь входящий и исходящий траффик по принадлежности IP.

Но IP адреса WEB серверов находятся в том же диапазоне, что и клиенты торрента.

Как можно в ipfw описать диапазон IP адресов (причем немаленький диапазон) исключив из него несколько IP?

WhitePangolin 04-02-2009 16:23 1029256

используйте оператор not

leonty 04-02-2009 16:34 1029272

ну в 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 тоже можно чтото подобное сделать. только вот как.... . нужно в мануале пошукать.

cluber 04-02-2009 17:12 1029307

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

leonty 04-02-2009 22:34 1029619

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 1029904

Создаем 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\)

В результате рубим все что идет не на адреса перечисленные в белом списке.

cluber 05-02-2009 11:12 1030044

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 1031311

Цитата:

Цитата cluber
#Определяем одну из торрент подсетей (на самом деле их несколько)
# сама сеть
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

соответственно стереть можно только весь диапазон, а не отдельный адрес.

cluber 09-02-2009 11:26 1033411

Цитата:

Цитата WhitePangolin
Это работать не должно. »

Цитата:

Цитата WhitePangolin
соответственно стереть можно только весь диапазон, а не отдельный адрес. »

Как тогда описать весь диапазон из разных подсетей за вычетом нескольких адресов из кажой?

WhitePangolin 09-02-2009 12:05 1033444

Цитата:

Цитата cluber
Как тогда описать весь диапазон из разных подсетей за вычетом нескольких адресов из кажой?»

Ну как вариант можно пойти от обратного и описать не сеть за вычетом исключений, а сами исключения, например так:
Цитата:

Цитата cluber
#Определяем одну из торрент подсетей (на самом деле их несколько)
# сама сеть
#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)
»



Время: 02:07.

Время: 02:07.
© OSzone.net 2001-