VPNクライアントにポートを転送しますか?

VPNクライアントにポートを転送しますか?

いくつかの問題がありましたが、解決策が見つかりませんでした。これで(残念ながら)Verizon 3Gを介してネットワークに接続しました。すべての着信トラフィックをフィルタリングするため、接続を受け入れるためにポートを開くことはできません。

現在、linode.comにLinux仮想マシンがあり、それをインストールしてポート転送をpptpd試してみたいと思いました。iptables私はそれをpptpdインストールし、私の家のコンピュータはよく接続されています。つまり、いくつかの一般的な情報は次のとおりです。

サーバー(Debian)WAN IP:eth0のxxxx - pptpd IP:ppp0のyyy1 - クライアントVPN IP:yyy100

私がクレイジーではないことを確認するために、サーバーからクライアントのオープンポートに接続しようとしましたが、クライアントはVPN IPを介した接続を受け入れました。

私が達成したいのはこれです:

インターネット - > WAN IP:ポート - >クライアントVPN IPに転送:ポート

たとえば、クライアントでポート6000を開くと、誰かがxxxx:6000にTelnetを接続でき、サーバーはそのポートをキャプチャして192.168.3.100:6000に転送します。

私は少なくとも20種類のGoogle検索iptables設定を試しましたが、まだ機能していません。誰もが私が知らないアイデアや全く異なるアプローチを持っていますか?ここでの目的は、ファイアウォールが強化された接続、好ましくはTCPおよびUDPトラフィックを介して受信することです。

ベストアンサー1

VPNサーバー(Linode)が機能するには、次の3つの作業を行う必要があります。

  1. IP転送を有効にする必要があります。

    sysctl -w net.ipv4.ip_forward=1
    
  2. ポートを転送するためにターゲットNAT(DNAT)を設定します。標準ポート転送機能なので、既にご存知でしょう。ただし、完全性のために、次のことを行います。

    iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 6000 -j DNAT --to-dest y.y.y.100:6000
    
  3. VPNクライアントの観点から、接続がVPNサーバーから出るようにソースNAT(SNAT)を設定します。

    iptables -t nat -A POSTROUTING -d y.y.y.100 -p tcp --dport 6000 -j SNAT --to-source y.y.y.1
    

SNATが必要な理由は、そうでない場合、VPNクライアントはVPNではなくデフォルトゲートウェイ(Verizon 3G)を介して接続を開始したホスト(zzzz)に直接リターンパケットを送信するためです。したがって、戻りパケットの送信元IPアドレスはxxxxではなくVerizon 3Gアドレスになります。 zzzzがxxxxへの接続を開始したため、あらゆる種類の問題が発生します。

ほとんどのポート転送設定では、ポート転送を実行するホストがターゲットホスト(ホームルータなど)のデフォルトゲートウェイでもあるため、SNATは必要ありません。

さらに、ポート6000を別のポート(たとえば7000)に転送する場合は、SNATルールは6000ではなく7000と一致する必要があります。

おすすめ記事