Многие unix'оиды знают прекрастную торрент качалку rtorrent. Но к сожалению она не поддерживает ipfilter'ы. У себя на домашнем серваке использую FreeBSD 8.1. И мне как мегалайнеру очень не хватает айпифильтра. Тогда я решил реализовать его средствами родного фрибсдешного фаервола - ipfw. В настройке фаерволов я не спец, и делал это первый раз. Мой скрипт выполняет только одно - позволяет юзеру rtorrent качать с ip адресов сети мегалайн.
Сначала нужно создать пользователя rtorrent, от которого и будет запускаться сама программа, ниже скрипт для фаервола:
ipfw.rules
netif="ale0" # Моя сетевая карта dnsservice="192.168.2.1" # ДНС сервер, он же роутер cmd="ipfw -q add " ipfw table 1 add 212.19.128.0/19 ipfw table 1 add 212.154.128.0/17 ipfw table 1 add 82.200.128.0/17 ipfw table 1 add 88.204.128.0/17 ipfw table 1 add 89.218.0.0/16 ipfw table 1 add 92.46.0.0/15 ipfw table 1 add 95.56.0.0/14 ipfw table 1 add 178.88.0.0/14 # Ниже диапазоны локальных сетей. ipfw table 1 add 10.0.0.0/8 ipfw table 1 add 172.16.0.0/12 ipfw table 1 add 192.168.0.0/16 # Стандартные правила для сетевого интерфейса lo0 $cmd allow all from any to any via lo0 $cmd deny all from any to 127.0.0.0/8 $cmd deny all from 127.0.0.0/8 to any # Все правила ниже приментяются для пользователя rtorrent, от которого # мы и запускаем rtorrent # Разрешаем udp куда угодно, нужно для DHT $cmd allow udp from me to any via $netif out uid rtorrent # Разрешаем входящий трафик на порт 4681, порт должен # быть прокинут на роутере, нужен для DHT $cmd allow udp from any to me 4681 via $netif in uid rtorrent # Разрешаем исходящие соединения на 80 и 2710 порты, нужно для анонсов трекеров $cmd allow tcp from me to any 80 out via $netif uid rtorrent $cmd allow tcp from me to any 2710 out via $netif uid rtorrent # Разрешаем весь входящий и исходящий трафик для локальных сетей и сети # мегалайн $cmd allow all from table\(1\) to me in uid rtorrent $cmd allow all from me to table\(1\) out uid rtorrent # Разришаем днс $cmd allow udp from me to $dnsservice 53 out via $netif keep-state uid rtorrent # Блокируем весь остальной трафик $cmd deny all from any to any uid rtorrent # Разрешаем остальным пользователям все. $cmd allow all from any to any
О настройке самого rtorrent'а и о том как включить ipfw не написал намерено. В инете итак полно инфы об этом.