プロキシとしてのiptables

プロキシとしてのiptables

どのように始めたらよいかよくわからないので、率直に言います。外国に旅行しなければならないのですが、地元のネットワークのローカル サーバーにアクセスする必要があります。DD-WRT ルーターがあり、その背後には PC だけが接続されています。そこで質問です。外部ネットワーク (外国) からルーターに接続して、ローカル ネットワーク (ISP 提供) にリダイレクトできるようにする iptables ルールを作成できますか。必要な「マップ」を作成してみます。

/Me - X/  
/My router - R/  
/Internet - I/  
/Local Server - S/  

S (ローカル サーバー) にアクセスする私の一般的な方法は次のとおりです。X-R-S インターネットにアクセスする私の一般的な方法は次のとおりです。X-R-I 私のニーズは次のとおりです。R<--I<--X(次に、R から S に接続します)
これは、外部ネットワークから S にアクセスできないためです。
自宅にいないときは、ルーターの背後にアクティブな PC がないため、プロキシを実行することはできません。

答え1

これは比較的簡単なはずです。SSH の場合は次のようなもので十分でしょう。

iptables -t nat -A PREROUTING -p tcp \  
  -i ppp0 --dport 22 \  
  -j DNAT   \
  --to-destination 10.10.10.10:22

仮定: R の外部インターフェースは ですppp0。これがルールを適用する入力インターフェースです。

前提: S の IP アドレスは 10.10.10.10 です。もちろん正しいアドレスに置き換えてください。

これは「宛先NAT」です。基本的には「通常のNAT」とまったく同じですが、宛先アドレスを内部サーバーのアドレスに置き換え、戻る途中で元に戻します。これを使用するには、XでSのsshdに接続するssh R代わりに、を実行するだけです(これはXが現在ssh Sないインターネットではなく、内部ネットワーク上で、SNAT(「通常の」またはソースNAT)を実行して、Sからの応答をR経由で送信する必要があり、ルールを「-i ppp0」から「-d <Rの外部アドレス>" を追加して、パケットが外部からだけでなく内部から受信された場合にも一致するようにします。おわかりのように、少し複雑になります。

注記:もちろん他のポートでも同様に実行できますが、本当に強くSamba (Windows 共有) や暗号化されていない HTTP (いずれにしても、公開されている認証されていないコンテンツでない限り) を公開することはお勧めしません。または、他のものも公開しないでください。可能な限り、これらを保護するのは簡単ではありません。そのため、SSH のポート転送を利用すると、多くの頭痛の種を回避できます。

ただし、Samba 転送は難しいので、完全にそれなしで実行するようにするのが最善です。

関連情報