Eu obtive uma configuração de VPN de acesso à Internet privada em uma máquina Mythbuntu 14.04 e estou no final tentando obter o encaminhamento de porta trabalhando com rTorrent (e ruTorrent). Minha configuração é rTorrent executando sob uma conta de usuário dedicada com todo o tráfego de internet para esse usuário direcionado somente através da VPN via OpenVPN e algumas regras do iptables. Eu recebo uma porta encaminhada da PIA, mas usar esse número de porta com o rTorrent não mostra a porta como sendo encaminhada na GUI da Web do ruTorrent. Eu tentei uma infinidade de regras de encaminhamento iptables sem sucesso - não importa o que eu tente o web GUI do ruTorrent mostra a porta do rtorrent como sendo bloqueada. Eu usei scanners de porta e posso ver que a porta alocada no endereço IP da VPN externa está aberta e também posso ver que o rTorrent está escutando na porta alocada. Eu tentei o encaminhamento de porta com o OpenVPN rodando em todo o sistema e o ruTorrent webUI mostra a porta como encaminhada - então eu estou supondo que o meu problema decorre do fato de que a VPN está ativa apenas para um usuário e que estou usando o iptables para alcançar isso - mas não consigo descobrir como fazer isso funcionar.
O comando que estou usando para iniciar o OpenVPN (observe o argumento --route-nopull):
sudo openvpn --config /home/prime/.pia/Russia.ovpn --auth-user-pass /home/prime/.pia/passwd --script-security 2 --up /home/prime/.pia/up.sh --down /home/prime/.pia/down.sh --route-nopull --ca /home/prime/.pia/ca.crt --crl-verify /home/prime/.pia/crl.pem
Meu arquivo up.sh que configura as regras de iptable para o usuário 'torrent':
#!/bin/bash
iptables -t mangle -I OUTPUT -m owner --uid-owner torrent -j MARK --set-mark 42
iptables -t mangle -I OUTPUT -d 192.168.1.0/24 -m owner --uid-owner torrent -j RETURN
iptables -t nat -I POSTROUTING -o tun0 -j MASQUERADE
ip rule add fwmark 42 table 42
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do
echo 0 > $f
done
ip route add default via $(ifconfig -a tun0 | grep -o 'P-t-P:[^ ]*' | cut -d : -f 2) table 42
sleep 1
ip route flush cache
....applications load from here on
A regra iptables que estou usando (eu tentei muito mais) sem sucesso:
#!/bin/bash
PORT=45829
IPADDRESS=$(ifconfig tun0|grep -oE "inet addr: *10\.[0-9]+\.[0-9]+\.[0-9]+"|tr -d "a-z :")
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -I PREROUTING -i tun0 -p tcp -j DNAT --to $IPADDRESS:$PORT
iptables -t nat -I PREROUTING -i tun0 -p udp -j DNAT --to $IPADDRESS:$PORT
#iptables -t nat -I PREROUTING -i tun0 -p tcp --dport $PORT -j DNAT --to-destination $IPADDRESS:$PORT
#iptables -t nat -I PREROUTING -i tun0 -p udp --dport $PORT -j DNAT --to-destination $IPADDRESS:$PORT
iptables -I FORWARD -i tun0 -p udp -d $IPADDRESS --dport $PORT -j ACCEPT
iptables -I FORWARD -i tun0 -p tcp -d $IPADDRESS --dport $PORT -j ACCEPT
iptables -A INPUT -p udp -m state --state NEW --dport $PORT -i tun0 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport $PORT -i tun0 -j ACCEPT