[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Как открыть порты для transmission?



James Brown wrote:
> Konstantin Fadeyev wrote:
>> 24 августа 2010 г. 11:26 пользователь Konstantin Matyukhin
>> <kmatyukhin@gmail.com> написал:
>>> 2010/8/24 Konstantin Fadeyev <jredkiy@gmail.com>:
>>>> Тогда уж сразу открывать с 1 порта, начиная.
>>> Зачем? Чтобы какая-нибудь зараза смогла притвориться почтовым
>>> сервером и рассылать спам?
>>>
>>> --
>>> С уважением,
>>> Константин Матюхин
>>>
>> Для торрентов достаточно открыть диапазон 6881-6889, тем более что как
>> правило, он уже есть в пресетах роутера. А я вообще открываю только
>> 6881. И настраиваем программы на него.
>>
> 
> У меня в выводе netstat (см. тред выше) transmission работает через
> какие-то 5-ти
> значные порты.
> Или, определяя случайные порты, он будет ломиться сам, через те, которые
> открыты?
Соединения устанавливаются в две стороны:
1) входящие соединения от других клиентов к transmission: они устанавливаются
*с* случайного порта на *заданные* порт transmission

В типичной/нормальной установке файрвола фильтруются только соединения извне на
локальные сервисы, поэтому для торрента их нужно специально разрешить:
# (упрощённо)
# разрешаем прохождение пакетов относящихся к уже установленным соединениям
# (под это правило попадает большинство пакетов, оно должно идти первым)
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# разрешаем всё на loopback
iptables -A INPUT -i lo -j ACCEPT
# режем левизну
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state NEW -p tcp '!' --syn -j DROP
# параноим
#iptables -A INPUT -s 169.254.0.0/16 -j DROP
# (аналогично с другими *не используемыми* приватными сетями)
# (192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12)
# разрешаем входящие соединения для торрента (порт поменяй на свой!)
iptables -A INPUT -p udp -m udp --dport 6688 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 6688 -j ACCEPT
# убиваем *все остальные* попытки соединения:
#iptables -A INPUT -j LOG
iptables -A INPUT -j REJECT

2) исходящие от transmission к другим клиентам, трекерам,...: они идут со
случайного порта (из диапазона sysctl net/ipv4/ip_local_port_range) на разные
порты извне (на которых трекеры, другие клиенты,... выбрали слушать)

Обычно исходящие соединения *не* фильтруются. Если очень хочется попараноить,
можно так:

# Разрешаем прохождение пакетов относящихся к уже установленным соединениям
# (под это правило попадает большинство пакетов, оно должно идти первым)
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Не разрешаем соединятся группе NONET
iptables -N NONET
iptables -F NONET
iptables -A NONET -p tcp -j REJECT --reject-with icmp-port-unreachable
iptables -A NONET -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A NONET -j DROP
iptables -A OUTPUT -m owner --gid-owner NONET -j NONET
# Тут можно добавить всяких правил для паранойи,
# к примеру превентивно[*] порезать гарантированно
# неиспользуемые *у вас* приватные сети:
#iptables -A OUTPUT -d 169.254.0.0/16 -j REJECT
# (192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12)
# ... но если нихера не понимаете - *не лезте*!
# [*] они всё равно с высокой вероятностью порежутся внутри провайдера
# Pазрешаем всё остальное. Бездумно менять тут ACCEPT на REJECT НЕЛЬЗЯ!
# Чтобы хоть что-то работало, тут нужно ещё *ОЧЕНЬ МНОГО* разрешить!
iptables -A OUTPUT -j ACCEPT


Reply to: