私はMythbuntu 14.04システムにプライベートインターネットアクセスVPNを設定し、ポート転送にrTorrent(およびruTorrent)を使用しようとしています。私の設定は、rTorrentが専用のユーザーアカウントで実行され、そのユーザーのすべてのインターネットトラフィックがOpenVPNといくつかのiptablesルールを介してのみVPNを介して転送されることです。 PIAから転送されたポートを受信しましたが、rTorrentがそのポート番号を使用しても、そのポートが転送されたことをruTorrent Web GUIに表示しません。私は役に立たない多数のiptablesの転送規則を試みました。何を試しても、ruTorrent Web GUIはrtorrentポートがブロックされていると言います。ポートスキャナを使用してみると、外部VPN IPアドレスに割り当てられたポートが開いていることがわかり、割り当てられたポートでrTorrentがListenしていることも確認できます。システム全体でOpenVPNのポート転送を実行してみましたが、ruTorrent WebUIにポートが転送されたことを示します。したがって、VPNが1人のユーザーにのみ機能し、それを達成するために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