kk
Default banner
Разное
426 450 постов45 подписчиков
Всяко-разно
0

[FreeBSD] ipfilter для rtorrent средствами ipfw

Многие unix'оиды знают прекрастную торрент качалку rtorrent. Но к сожалению она не поддерживает ipfilter'ы. У себя на домашнем серваке использую FreeBSD 8.1. И мне как мегалайнеру очень не хватает айпифильтра. Тогда я решил реализовать его средствами родного фрибсдешного фаервола - ipfw. В настройке фаерволов я не спец, и делал это первый раз. Мой скрипт выполняет только одно - позволяет юзеру rtorrent качать с ip адресов сети мегалайн.

Сначала нужно создать пользователя rtorrent, от которого и будет запускаться сама программа, ниже скрипт для фаервола:

ipfw.rules
  1. ipfw -q -f flush # Очищаем все правила ipfw
  2.  
  3. netif="ale0" # Моя сетевая карта
  4. dnsservice="192.168.2.1" # ДНС сервер, он же роутер
  5. cmd="ipfw -q add "
  6.  
  7. ipfw table 1 flush # Очищаем таблицу, и добовляем все ip адреса сети мегалайн
  8. ipfw table 1 add 212.19.128.0/19
  9. ipfw table 1 add 212.154.128.0/17
  10. ipfw table 1 add 82.200.128.0/17
  11. ipfw table 1 add 88.204.128.0/17
  12. ipfw table 1 add 89.218.0.0/16
  13. ipfw table 1 add 92.46.0.0/15
  14. ipfw table 1 add 95.56.0.0/14
  15. ipfw table 1 add 178.88.0.0/14
  16. # Ниже диапазоны локальных сетей.
  17. ipfw table 1 add 10.0.0.0/8
  18. ipfw table 1 add 172.16.0.0/12
  19. ipfw table 1 add 192.168.0.0/16
  20.  
  21. # Стандартные правила для сетевого интерфейса lo0
  22. $cmd allow all from any to any via lo0
  23. $cmd deny all from any to 127.0.0.0/8
  24. $cmd deny all from 127.0.0.0/8 to any
  25.  
  26. # Все правила ниже приментяются для пользователя rtorrent, от которого
  27. # мы и запускаем rtorrent
  28. # Разрешаем udp куда угодно, нужно для DHT
  29. $cmd allow udp from me to any via $netif out uid rtorrent
  30. # Разрешаем входящий трафик на порт 4681, порт должен
  31. # быть прокинут на роутере, нужен для DHT
  32. $cmd allow udp from any to me 4681 via $netif in uid rtorrent
  33. # Разрешаем исходящие соединения на 80 и 2710 порты, нужно для анонсов трекеров
  34. $cmd allow tcp from me to any 80 out via $netif uid rtorrent
  35. $cmd allow tcp from me to any 2710 out via $netif uid rtorrent
  36. # Разрешаем весь входящий и исходящий трафик для локальных сетей и сети
  37. # мегалайн
  38. $cmd allow all from table\(1\) to me in uid rtorrent
  39. $cmd allow all from me to table\(1\) out uid rtorrent
  40. # Разришаем днс
  41. $cmd allow udp from me to $dnsservice 53 out via $netif keep-state uid rtorrent
  42. # Блокируем весь остальной трафик
  43. $cmd deny all from any to any uid rtorrent
  44. # Разрешаем остальным пользователям все.
  45. $cmd allow all from any to any

О настройке самого rtorrent'а и о том как включить ipfw не написал намерено. В инете итак полно инфы об этом.