|
\documentclass[11pt]{article}
|
|
%Gummi|065|=)
|
|
\title{\textbf{Transmission Torrent Setup Notes}}
|
|
\usepackage{graphicx}
|
|
\usepackage{caption }
|
|
\author{Steak Electronics}
|
|
\date{2019}
|
|
\begin{document}
|
|
|
|
%\maketitle
|
|
|
|
|
|
\section{Overview}
|
|
Transmission is a Bittorrent server that can be deployed on a computer or dedicated seedbox. It's installable with apt-get install transmission-daemon. There is transmission-remote-gtk to view the torrents over the LAN.
|
|
\section{Setup Notes}
|
|
I setup transmission behind a VPN, and forward ports appropriately. In order to do this, I have an outbound VPN from my LAN that goes to a remote server, then the ports for transmission are open on the remote server.
|
|
|
|
\subsection{Setup Start}
|
|
Install openvpn road warrior from Nyr on github. This is deployed on the remote VPS. Create a client certificate and install that on the LAN seedbox.
|
|
|
|
\vspace{0.2in}
|
|
|
|
On server you need to forward ports:
|
|
|
|
\begin{verbatim}
|
|
iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 52000 \
|
|
-j DNAT --to-destination 10.8.0.2:52000
|
|
iptables -t nat -I PREROUTING -i eth0 -p udp --dport 52000 \
|
|
-j DNAT --to-destination 10.8.0.2:52000
|
|
\end{verbatim}
|
|
In fact, you probably only need one, but here we are opening TCP and UDP. This example assumes you are using the default transmission ports. It's advised to change the default ports.
|
|
|
|
On transmission daemon client, you don't need anything (for iptables). The remote VPN server does all firewall routing.
|
|
|
|
\section{What can go wrong}
|
|
|
|
\subsection{Changing transmission configs}
|
|
In order to change any settings.json of transmission, you must stop transmission. Otherwise, the running program will overwrite / ignore your changes.
|
|
|
|
\subsection{/var/lib/transmission/config/settings.json}
|
|
Make sure peer port is 52000, or whatever you set it to.
|
|
Disable random peer port (shouldn't be enabled by default).
|
|
|
|
\vspace{0.2in}
|
|
|
|
make sure bind-address ipv4 has your vpn address, or make it 0.0.0.0
|
|
IF you have it to a previous or incorrect ipv4 address, it will look like * (for all ports) in your \# netstat -ano , but it just won't work. TRAP
|
|
|
|
\vspace{0.2in}
|
|
|
|
\subsection{All Bittorrent traffic through Transmission}
|
|
If your vpn for all the traffic is working correctly when you examine ifconfig you will see the packet numbers for eth0 and tun0 be comparable in numbers.
|
|
|
|
if it seems like eth0 is moving more packets than tun0, your tunnel is not working
|
|
the torrent client is leaking.
|
|
|
|
Verify it by doing either a netstat or more helpfully a tcpdump for the local interface
|
|
|
|
\subsubsection{Block WAN traffic to transmission}
|
|
You can block the WAN traffic that isn't from the VPN to the transmission daemon at the router.
|
|
|
|
So wan > no vpn > router > seedbox -- BLOCK
|
|
and on top of that (insert for iptables, not append)
|
|
|
|
Wan > yes vpn > router > seedbox -- ALLOW
|
|
|
|
\subsection{RPC}
|
|
RPC on transmission. This is the protocol that you can access transmission through from another machine.
|
|
|
|
\textbf{Problem:}
|
|
Only works through http. If you want it on a VPS, you have a problem (It's not encrypted and passwords are in plain text). There's no way to access the Seedbox remotely (securely).
|
|
|
|
\textbf{Solution:}
|
|
Use it through a VPN tunnel. e.g. Transmission-remote-gui.
|
|
|
|
Force binding of RPC to be only the TUN IP address as well. This way RPC is not accessible from WAN.
|
|
|
|
\section{Conclusion}
|
|
|
|
|
|
Basically:
|
|
\begin{itemize}
|
|
\item install nyr on server
|
|
\item server, add two prerouting commands (just these two!)
|
|
\item client, double check transmission settings.json if necessary.
|
|
\item client, watch /var/log/transmission/, and verify the port is open via transmission-remote-gtk
|
|
\end{itemize}
|
|
|
|
|
|
|
|
\end{document}
|