Решено: rtorrent iptables

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

NemesisSOAD
Сообщения: 94
ОС: Archlinux

Решено: rtorrent iptables

Сообщение NemesisSOAD »

rtorrent =======


Код: Выделить всё

port_range = 31001-31049 #
dht = auto
dht_port = 31000

iptables


Код: Выделить всё

iptables -A INPUT -p tcp --destination-port 31000:31049 -j ACCEPT
iptables -A INPUT -p udp  --destination-port 31000:31049 -j ACCEPT


но торрент не работает, не качает. При глобальном INPUT ACCEPT, всё работает.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Решено: rtorrent iptables

Сообщение watashiwa_daredeska »

--destination-port предназначен для одного порта. Если нужно несколько, то это выглядит примерно так:
iptables -A INPUT -p tcp -m multiport --dports 31000:31049 -j ACCEPT
Спасибо сказали:
NemesisSOAD
Сообщения: 94
ОС: Archlinux

Re: Решено: rtorrent iptables

Сообщение NemesisSOAD »

не советуйте то в чём не уверенны, мультипорт предназначен для списка адресов а не для диапазона. Он конечно справляется и с диапазоном, но особой необходимости в нём в этой роли нет.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Решено: rtorrent iptables

Сообщение KiWi »

-A, --append chain rule-specification
Append one or more rules to the end of the selected chain. When the source and/or destination names resolve to more than one address, a
rule will be added for each possible address combination.

Дальше сам -- вроде, умный.
Спасибо сказали:
NemesisSOAD
Сообщения: 94
ОС: Archlinux

Re: Решено: rtorrent iptables

Сообщение NemesisSOAD »

Дальше сам -- вроде, умный.

смысла ответа не понял, решение оказалось простое, диапазон портов нужен более большим и общепринятым. В частности, установил диапазон 31000 - 65000 и всё забегало. скорее всего это особенность p2p протокола.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Решено: rtorrent iptables

Сообщение KiWi »

NemesisSOAD писал(а):
04.07.2011 15:11
Дальше сам -- вроде, умный.

смысла ответа не понял, решение оказалось простое, диапазон портов нужен более большим и общепринятым. В частности, установил диапазон 31000 - 65000 и всё забегало. скорее всего это особенность p2p протокола.

Это означает, что, добавляя что-то в конец, неплохо бы показать и всё остальное.
В том числе и остальные цепочки.

А 32768-61000 это, вообще, порты для ИСХОДЯЩИХ соединений.
С другой стороны, если не разрешить входящий трафик для ESTABLISHED-соединений, то получим то, что имеем.
А если ещё с немного другой стороны -- не разрешив его, не будет работать вообще ничего.

И более "большие" и "общепринятые" диапазоны тут не нужны -- rtorrent использует ровно 2 порта -- один, возможно произвольный(см. man про port_range & port_random), из port_range и второй -- dht_port.
Спасибо сказали:
NemesisSOAD
Сообщения: 94
ОС: Archlinux

Re: Решено: rtorrent iptables

Сообщение NemesisSOAD »

У меня слишком специфическое ПО, которому на сервере доверять нельзя, поэтому настройка фаервола достаточно сложна и не тривиальна.
С другой стороны, если не разрешить входящий трафик для ESTABLISHED-соединений, то получим то, что имеем.

честно, в данном случае я не увидел разницы между разрешением ESTABLISHED соеднинений для диапазона портов или просто открыв их в мир.
Полностью ESTABLISHED соединения я разрешить не могу, по причинам написанным выше.
А фаервол я не показываю по причине, что никогда не пишу если не попробую эту всю кухню в фаерволе с минимальным набором правил.
Очистил всё, разрешил днс, icmp ,lo и ещё там чего, если не работает - тогда спрашиваю.
А 32768-61000 это, вообще, порты для ИСХОДЯЩИХ соединений.

спорить не буду, но ссылку попрошу. Порт, не зря это слово пошло от обычного "порт" (в котором корабли стоят_. Туда "корабли" приходят и уходят если он открыт, и только фаервол, как форт с пушками возле порта может сказать кому ходить а кому нет.
rtorrent использует ровно 2 порта -- один, возможно произвольный(см. man про port_range & port_random), из port_range и второй -- dht_port.

это верно, но я без понятия как работает torrent с сидами\пирами, да разрешение ESTABLISHED соединений решит мою проблему, но добавит новую.

в качестве решения, которое сработает для обыкновенной workstation

Код: Выделить всё

iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT

или более новое решение, ибо state уже устарело.

Код: Выделить всё

iptables -A INPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

з.ы. можете писать в личку.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Решено: rtorrent iptables

Сообщение KiWi »

У меня слишком специфическое ПО, которому на сервере доверять нельзя, поэтому настройка фаервола достаточно сложна и не тривиальна.

Отлично, поэтому надо сделать большую дырку в 34 тысячи портов, которая позволяет любому приложению ходить куда угодно. Браво, это очень логично.

NemesisSOAD писал(а):
05.07.2011 11:50
честно, в данном случае я не увидел разницы между разрешением ESTABLISHED соеднинений для диапазона портов или просто открыв их в мир.

Например, тем, что они не открыты в мир и не найдётся приложения, которое будет слушать этот порт и будет доступно из мира?

Полностью ESTABLISHED соединения я разрешить не могу, по причинам написанным выше.

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

То есть вместо разрешения только ESTABLISHED, был практически полностью открыт ESTABLISHED и что_угодно. Это, безусловно, безопасней.

А фаервол я не показываю по причине, что никогда не пишу если не попробую эту всю кухню в фаерволе с минимальным набором правил.

Минимальный набор правил(а, точнее, их отсутствие) -- это настройки по умолчанию -- разрешить всё.

Очистил всё, разрешил днс, icmp ,lo и ещё там чего, если не работает - тогда спрашиваю.

И вот он уже не минимальный.

спорить не буду, но ссылку попрошу. Порт, не зря это слово пошло от обычного "порт" (в котором корабли стоят_. Туда "корабли" приходят и уходят если он открыт, и только фаервол, как форт с пушками возле порта может сказать кому ходить а кому нет.

Код: Выделить всё

sysctl -a | grep net.ipv4.ip_local_port_range

Естественно, никто не запрещает делать bind на этот порт, но не факт что получится его СДЕЛАТЬ -- порт имеет право быть занятым.

это верно, но я без понятия как работает torrent с сидами\пирами, да разрешение ESTABLISHED соединений решит мою проблему, но добавит новую.

Очевидно, кроме подключения пиров извне, есть ещё и подключения к пирам, находящимся снаружи.
И тут, естественно, слушать какой-либо отдельный порт нет необходимости.

или более новое решение, ибо state уже устарело.

Код: Выделить всё

iptables -A INPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Спасибо, я в курсе.

з.ы. можете писать в личку.

Личка придумана исключительно для личных разговоров, коим этот не является.
Спасибо сказали:
NemesisSOAD
Сообщения: 94
ОС: Archlinux

Re: Решено: rtorrent iptables

Сообщение NemesisSOAD »

kiwi спасибо, что вы не настроенны агрессивно) я стараюсь помочь не себе, а другим пользователям. Дырка в 34 тысячи портов не логична. но я с радостью выслушаю ваше мнение и ваше решение. Я плохо понимаю п2п, и не являюсь гуру в iptables но тем, что я знаю я пытаюсь помочь))
как по мне, то в iptables много таких моментов, но решаются они мягко говоря, не совсем правильно.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Решено: rtorrent iptables

Сообщение KiWi »

NemesisSOAD писал(а):
06.07.2011 00:21
kiwi спасибо, что вы не настроенны агрессивно) я стараюсь помочь не себе, а другим пользователям. Дырка в 34 тысячи портов не логична. но я с радостью выслушаю ваше мнение и ваше решение. Я плохо понимаю п2п, и не являюсь гуру в iptables но тем, что я знаю я пытаюсь помочь))
как по мне, то в iptables много таких моментов, но решаются они мягко говоря, не совсем правильно.

Torrent(без dht и прочих дополнений) в этом плане достаточно прост - его поведение можно сравнить с, например, браузером и веб-сервером, работающими одновременно:
- клиент может получить список пиров от трекера и сам к ним подключиться - если у них есть "внешний" ip - наподобие браузера
- другие пиры могут получить от трекера адрес клиента и подключиться к нему("внешний" ip должен быть уже у клиента) - тут уже можно сравнить с веб-сервером

В данном случае - пир - удаленный, а клиент - запущен локально.

Соотвественно, открывая только локальный порт - нужно сидеть и ждать пока кто-нибудь извне подключиться.
Не открывая - ждать пиров с внешним IP и подключаться к ним(аналогично варианту, когда клиент сидит за NATом.

Правильный и безопачный способ - разрешить established соединения. Чем он не подходит, без полного описания ситуации, сказать не могу.

Если вам нужно, чтобы какие-то локальные приложения вообще не могли ходить наружу, то, наверно, идеальный способ - разместить их отдельно. Можно ещё посмотреть в сторону selinux и подобных.
Но, повторюсь, без полного описания того, кому и куда можно и нельзя ходить(с адресами, портами и протоколами) - советовать что-либо крайне трудно.

P.S.: вообще, у меня не так давно появилось желание стать капитаном очевидность и подобные штуки(iptables, sysctlи, выделение памяти и прочие штуки про linux, о которых не так часто пишут) собрать в виде заметок на отдельном сайте, благо домен под это дело есть. Возможно, Alex2ndr и кто-нибудь ещё ко мне присоединяться(но тут не общался и поэтому не знаю), благо разместить есть где.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Решено: rtorrent iptables

Сообщение watashiwa_daredeska »

NemesisSOAD писал(а):
06.07.2011 00:21
Я плохо понимаю п2п
А тут не надо понимать P2P, надо просто понимать, какие порты нужны rtorrent'у.
  • Ему нужны 2 (два) входящих порта: 1 TCP, 1 UDP. Для listening TCP port есть опция port_range. В принципе, на локальной машине в большинстве случаев достаточно диапазона из 1 порта, расширять стоит на всякий случай, чтобы было из чего выбрать, если вдруг порт при старте rtorrent окажется занят кем-то еще. listening UDP port задается опцией dht_port и он может быть только один.
  • В процессе работы rtorrent сам устанавливает исходящие соединения с трекерами и пирами, при этом исходящий порт выбирается системой обычным порядком (можно считать, что случайно). Порты этих соединений никак не ограничиваются в настройках rtorrent, поэтому единственный способ — разрешить исходящие по всем портам и входящие ESTABLISHED. Если Вам это не подходит, то остается вариант с -m owner и запуском rtorrent от имени выделенного пользователя.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Решено: rtorrent iptables

Сообщение KiWi »

watashiwa_daredeska писал(а):
06.07.2011 01:31
Если Вам это не подходит, то остается вариант с -m owner и запуском rtorrent от имени выделенного пользователя.

У -m owner, насколько я помню, всё плохо с многоядерными системами.

UPD: вру, с матчингом на пользователя там, похоже, всё хорошо. Проблемы были с матчингом на pid/sid.
Спасибо сказали: