Чтобы правильно настроить iptables для Transmission, нужно понимать, что торрент-клиент использует сеть для двух разных задач:
- Обмен данными с пирами и трекерами (сам торрент-трафик).
- Управление через веб-интерфейс (RPC), если вы включаете его.
Ниже приведена подробная инструкция.
Шаг 1. Узнайте порт Transmission (Peer Port)
По умолчанию Transmission использует случайный порт (часто это 51413), но он может быть другим.
- Как проверить: Откройте настройки Transmission → вкладка Сеть (Network) → посмотрите значение Порт для входящих соединений (Port used for peer connections).
- В примерах ниже мы будем использовать порт
51413. Замените его на ваш актуальный порт!
Шаг 2. Разрешаем входящий торрент-трафик (TCP и UDP)
Торренты используют как TCP, так и UDP (для DHT, PEX и UDP-трекеров). Вам нужно разрешить входящие соединения на ваш порт пиров.
# Разрешаем входящие TCP соединения на порт пиров
sudo iptables -A INPUT -p tcp --dport 51413 -j ACCEPT
# Разрешаем входящие UDP соединения на порт пиров (важно для DHT)
sudo iptables -A INPUT -p udp --dport 51413 -j ACCEPT
Шаг 3. Разрешаем исходящие соединения
Transmission должен иметь возможность подключаться к трекерам (HTTP/HTTPS) и другим пирам на их случайные порты. Если у вас в цепочке OUTPUT стоит правило DROP по умолчанию, нужно разрешить исходящий трафик.
# Разрешаем все исходящие TCP и UDP соединения (необходимо для работы торрентов)
sudo iptables -A OUTPUT -p tcp -j ACCEPT
sudo iptables -A OUTPUT -p udp -j ACCEPT
Шаг 4. Разрешаем доступ к веб-интерфейсу (Опционально)
Если вы хотите заходить в настройки Transmission через браузер (по умолчанию порт 9091), нужно открыть и его.
# Разрешаем доступ к веб-интерфейсу (замените 9091 на ваш порт RPC, если меняли)
sudo iptables -A INPUT -p tcp --dport 9091 -j ACCEPT
Никогда не открывайте порт веб-интерфейса (
9091) на весь белый интернет (0.0.0.0/0), если у вас не настроена надежная авторизация (логин/пароль) в настройках Transmission. Злоумышленники могут получить доступ к вашему серверу и выполнить произвольный код.Безопасный вариант — разрешить доступ к веб-интерфейсу только с вашего домашнего IP:
# Разрешаем доступ к веб-интерфейсу ТОЛЬКО с вашего IP (замените 192.168.1.100 на ваш реальный внешний IP)
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 9091 -j ACCEPT
Шаг 5. Сохраняем правила
Правила iptables сбросятся после перезагрузки сервера. Их нужно сохранить.
- Для Ubuntu/Debian (если используется netfilter-persistent):
sudo netfilter-persistent save - Для CentOS/RHEL/AlmaLinux:
sudo iptables-save > /etc/sysconfig/iptables - Универсальный способ (сохранение в файл и загрузка через rc.local или systemd):
sudo iptables-save > /etc/iptables/rules.v4
💡 Важные нюансы
1. Если Transmission работает в Docker:
Если вы используете Docker, правила iptables на хосте могут не сработать так, как вы ожидаете, потому что Docker сам управляет iptables (через цепочки DOCKER и FORWARD). В этом случае порт нужно пробрасывать при запуске контейнера (флаг -p 51413:51413/tcp -p 51413:51413/udp), а на хосте разрешать FORWARD-трафик.
2. Если у вас NAT (домашний роутер):
Если этот сервер стоит за роутером, правил iptables на самом сервере недостаточно. Вам нужно зайти в настройки роутера и сделать Проброс портов (Port Forwarding / Virtual Server) для порта 51413 (TCP и UDP) на внутренний IP-адрес вашего сервера.
3. Альтернатива (UFW):
Если вы используете Ubuntu и ufw (Uncomplicated Firewall), управлять правилами гораздо проще:
sudo ufw allow 51413/tcp
sudo ufw allow 51413/udp
sudo ufw allow from ВАШ_IP to any port 9091 proto tcp