저는 Mythbuntu 14.04 시스템에 개인 인터넷 액세스 VPN을 설정했으며 포트 전달을 위해 rTorrent(및 ruTorrent)를 사용하려고 노력하고 있습니다. 내 설정은 rTorrent가 전용 사용자 계정으로 실행되고 해당 사용자의 모든 인터넷 트래픽이 OpenVPN 및 일부 iptables 규칙을 통해서만 VPN을 통해 전달된다는 것입니다. PIA에서 전달된 포트를 받았지만 rTorrent에서 해당 포트 번호를 사용하면 해당 포트가 전달되었음을 ruTorrent 웹 GUI에 표시하지 않습니다. 나는 아무 소용이 없는 수많은 iptables 전달 규칙을 시도했습니다. 무엇을 시도하더라도 ruTorrent Web GUI에서는 rtorrent 포트가 차단되었다고 말합니다. 포트 스캐너를 사용해 보니 외부 VPN IP 주소에 할당된 포트가 열려 있는 것을 볼 수 있고, 할당된 포트에서 rTorrent가 Listen하고 있는 것도 볼 수 있습니다. 시스템 전체에서 OpenVPN의 포트 전달을 실행해 보았는데 ruTorrent WebUI에 포트가 전달되었음을 표시합니다. 따라서 VPN이 한 명의 사용자에게만 작동하고 이를 달성하기 위해 iptables를 사용하고 있다는 사실에서 문제가 발생한 것으로 추측됩니다. 이것은 - — 하지만 어떻게 작동하게 만드는지 모르겠습니다.
OpenVPN을 시작하는 데 사용하는 명령(--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
내 up.sh 파일은 "torrent" 사용자에 대한 iptable 규칙을 설정합니다.
#!/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
내가 사용하고 있는 iptables 규칙(나도 많이 시도했습니다)은 아무 소용이 없습니다.
#!/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