トンネルが機能して動作するようにDD-WRTルーターでopenvpnを正常に設定しましたが、ルーティングをまったく妨げることはありません(デフォルト設定では、すべてのトラフィックがトンネルを通過したい)。
tun1のポート51413を私のネットワーク(192.168.77.145)の特定のホストにポート転送したいです。
また、 tun1 経由でルーティングされるようにポート 6881-6890 を偽装する必要があります。これにはパケットの変更/表示と手動によるルーティング設定が含まれていることがわかっていますが、iptablesを考慮して12年になりました(その時点でまだダイヤルアップがあったようです)。
私が偶然見つけることができなかったレシピはインターネットにありますか?
[編集する]
私はtcpdumpを試してみましたが、私が使用しているクライアント(OSXでの転送)に奇妙な機能があるようです。このクライアントは、すべての発信パケットとすべての着信パケット宛先にソースポートとして51413(ユーザー設定可能)を使用します。 tcpdumpでポート6881-6889を探しても、このポートは常にリモート側の送信元ポートであり、常に51413に送信されます。
だから思ったよりもとても簡単でした。 tun1インターフェースを介して、対応するsrcポート番号を持つすべてのエントリをルーティング/最長にします。
私の考えでは、iptablesのルールは次のようになります。
# mark bittorrent packets
iptables -t mangle -A OUTPUT -p udp --sport 51413 -j MARK --set-mark 7
iptables -t mangle -A OUTPUT -p tcp --sport 51413 -j MARK --set-mark 7
# allow responses
iptables -A INPUT -i tun1 -m conntrack --ctstate ESTABLISHED -j ACCEPT
# allow bittorrent
iptables -A INPUT -i tun1 -p udp --dport 51413 -j ACCEPT
iptables -A INPUT -i tun1 -p tcp --dport 51413 -j ACCEPT
# block everything incoming on vpn
#iptables -A INPUT -i tun1 -j REJECT
# masquerading
iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE
これは正常に見えますか?まだルーティングルールがわからない。
[編集2]
私は-Aがiptablesルールの最後に追加されるので、間違っていると思います。私のルーターは最初に神が何を知っているかを追加し、そのルールが一致する場合、そのルールは無視されます。私は彼らがすべて-Iでなければならないと確信しています。
このように変更しても何も機能しません。
このパケットは私のプライベートネットワークのbr0(ブリッジインターフェイス)に表示されます。何も変更しない場合、DD-WRT設定はvlan2を介してNATされます。もちろん、OpenVPNのインターフェイスはtun1です(これを介してbtトラフィックを送信したい)。
[編集3]
最初の2つのiptablesステートメントが正しくありません。私は作者が自分のデスクトップをルーターとして使用する例を取り組んでいます(私の考えでは)。これは、デスクトップがローカルネットワークを介して2つの外部インターフェイスを持つルーターにパケットを送信するのとは異なります。正しいステートメントのセットは次のとおりです。
# routing table setup
ip route replace default via $VPNGW dev tun1 table 100
ip rule add fwmark 7 table 100
# mark bittorrent packets
iptables -t mangle -I PREROUTING -p udp --sport 51413 -j MARK --set-mark 7
iptables -t mangle -I PREROUTING -p tcp --sport 51413 -j MARK --set-mark 7
# allow responses
iptables -A INPUT -i tun1 -m conntrack --ctstate ESTABLISHED -j ACCEPT
# allow bittorrent
iptables -A INPUT -i tun1 -p udp --dport 51413 -j ACCEPT
iptables -A INPUT -i tun1 -p tcp --dport 51413 -j ACCEPT
# block everything incoming on vpn
iptables -A INPUT -i tun1 -j REJECT
# masquerading
iptables -t nat -I POSTROUTING -o tun1 -j MASQUERADE
これはまだ完璧ではありません。現在、ほとんどのbtトラフィックはtun1を通過しますが、vlan2にはまだ51413の受信パケットが表示されます。なぜこれが起こるのかわかりません。