web-dev-qa-db-ja.com

LANからOpenVPNクライアントへのポートフォワード(iptables?)

LAN(192.168.1.12でローカルにアドレス指定可能)でOpenVPNサーバーを実行していて、LAN上の他のデバイスからポート3000を介してVPNクライアントの1つにリクエストを転送したいと思います。 (10.8.0.6)

私の最終的な結果は、192.168.x.xデバイスがブラウザーに192.168.1.12:3000と入力してWebサーバーに到達できるようにすることですが、実際には10.8.0.6:3000と通信しています。

iP転送はVPNサーバーで有効になっています。

(他の質問からのこれらの変更された試みは機能しないようです)

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 3000 -j DNAT --to-destination 10.8.0.6:3000
iptables -A FORWARD -p tcp -d 10.8.0.6 --dport 3000 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
2
Joe

結局のところ...私の最初のiptablesルールには何の問題もありませんでした。最初のものだけが必要でしたが!

0
Joe

LAN内のコンピューターに「静的ルート」を追加して、VPNクライアントの場所をコンピューターに通知することで、同様のことが実現できます。

LANクライアント


たとえば、次のようにLAN内のLinuxマシンへのルートを追加できます。

(Sudo) ip route add 10.8.0.0/24 via 192.168.1.12

Windowsでは、次のように同じことができます。

route add 10.8.0.0 mask 255.255.255.0 192.168.1.12

(Windowsを使用している場合は、-pオプションをrouteとともに使用して、ルートを永続化することを検討してください。

OpenVPNサーバー


明らかに、VPNクライアントはLANについても知っている必要があります。これは、OpenVPNserver.confにこれを追加することで実現できます。

Push "route 192.168.1.0 255.255.255.0"

(LANのネットマスクが/ 24であると仮定します)

上記のすべてを実行した場合は、次のように前述のWebサーバーにアクセスできます。 http://10.8.0.6:30

0
Yamakaja

SSHトンネリングを使用してiptablesルールを使用せずに同じことを行うことができます。 OpenVPNサーバーで次のコマンドを実行します。

$ ssh -L 3000:10.8.0.6:3000 root@localhost &

その後、開くと http://192.168.1.12:30 そして10.8.0.6:3000に転送されます

実際のSSH接続はバックグラウンドで実行され、サーバーを再起動した後、または接続をときどき切断した後、コマンドを再実行する必要があります。

SSHトンネリングのその他の例については、 ここ を参照してください。このような場合に非常に役立つことがあります。

0
Valentin