トンネルを介して特定のアドレスをルーティングする方法は?

トンネルを介して特定のアドレスをルーティングする方法は?

私のサーバーがあるサブネットからのみアクセスできるいくつかのWebサイト/サービスがあります(一般的なイントラネットシナリオを考えてみてください)。 SSHトンネルを介してこれらのアドレスにトラフィックを透過的にルーティングする方法はありますか?

次の設定を検討してください。

私のラップトップはホームネットワークに接続されています。 ips XとYのサービスに直接アクセスできません。実際、これらのサービスにアクセスできるサブネット上のサーバーへのSSHトンネルがあります。

すべてのトラフィックをサーバー経由で送信する完全なVPNソリューションを実行せずに、このトンネルを通過するようにサブネットXとYへのすべてのトラフィックを自動的にカプセル化できますか?つまり、他のサブネットに移動するすべてのトラフィックはラップトップから直接移動する必要があり、サーバーを通過しないでください(トンネルを使用)。

答え1

ルーティングテーブルでトラフィックがルーティングされるインターフェイスを指定できます。

sudo route add <host.com> -interface <ppp0>

ここで、host.comはインターフェイスを介してアクセスするホスト名またはIP、ppp0はコマンドに表示されるVPNのリンク識別子ですifconfig

答え2

最新バージョンのOpenSSHは、真のVPNサポートのためにネットワークデバイスの調整/タブをサポートしています。バラよりhttps://help.ubuntu.com/community/SSH_VPN一部の基本文書(明らかにUbuntuに固有のものですが、基本原則は他の場所でも適用されます。)

答え3

免責事項:私は私が説明したいことを実際にテストしておらず、実際には間違っているかもしれません。しかし、あなたの質問はとても面白いので、答えのドラフトを作成したい誘惑に耐えることができませんでした。 :-) また、ここの設定はiptablesLinux にのみ存在する可能性のある機能によって異なります。

ラップトップでサーバーX1の特定のポートP1、サーバーX2のポートP2などに接続しようとしているとします。 - SSHトンネルを介してTCPトラフィックをこれらの特定のサーバーとポートのペアにルーティングする方法を説明します。 メモ:IPアドレスX1、X2などは、ゲートウェイホスト(SSH経由で接続しているホスト)から見えるサーバーのIPアドレスです。

  1. 未使用のローカルポートL1(例:10000)、L2(例:10001)などを選択します。ポートL1、L2、...はすべて一意である必要があり、その数は一意の(Xn、Pn)サーバーの数+ポートのペアに等しくなければなりません。

  2. iptablesXn:Pnに向かうパケットをlocalhost:Lnにリダイレクトするために使用されます。

    iptables -t nat -A出力-p tcp -d X1 --dport P1 -j DNAT --ターゲットローカルホストへ:L1 iptables -t nat -A出力-p tcp -d X2 --dport P2 -j DNAT - - Destination ローカルホスト: L2

  3. -Llocalhost:Lnから(Xn、Pn)にトラフィックをトンネリングするオプションを使用して、SSHを介してゲートウェイに接続します。

    sshゲートウェイ。サーバー-Lローカルホスト:L1:X1:P1 -Lローカルホスト:L2:X2:P2 ...

例:

# access webserver.intranet (port 80) through localhost:10080
iptables -t nat -A OUTPUT -p tcp -d webserver.intranet --dport 80 -j DNAT --to-destination localhost:10080
ssh gateway.server -L locahost:10080:webserver.intranet:80

指示:

  • 動作している場合はTCPでのみ動作します。

  • 複数のサーバーにアクセスしたい場合は、VPNを設定する方が簡単です。

  • SSHオプションを使用してSOCKSプロキシをエミュレートし、そのプロキシを介してすべてのトラフィックをルーティングするのが-D簡単になります。

答え4

すべてのトラフィックをサーバー経由で送信する完全なVPNソリューションを実行せずに、このトンネルを通過するようにサブネットXとYへのすべてのトラフィックを自動的にカプセル化できますか?

VPNがこのような役割を果たしているので、最初は少し奇妙に見えるかもしれません。 SSHは、ローカルシステムのポートを他の場所にあるリモートシステムのポートに接続するというアイデアであるポイントツーポイント方式です。実際には、想像するトラフィックの種類に合わせて設計されていません。

つまり、他のサブネットに移動するすべてのトラフィックはラップトップから直接移動する必要があり、サーバーを通過しないでください(トンネルを使用)。

今回もVPNはこの問題を解決できます。

安全なVPNトラフィック用の「重い」ソリューションを購入することが心配な場合(つまり、あまりにも複雑で使用したくない場合)、実際に見てください。オープンVPN、これはあなたが説明するものと正確に一致します。すべてのトラフィックをカプセル化するだけでなく、そのサブネットに向かうトラフィックだけがVPNパイプを通過するようにカプセル化されます。ローカルコンピュータとリモートコンピュータの両方でテキストファイルを編集する必要がありますが、操作は非常に簡単です。

あなたの目的に合わせて仲介者(サーバー)があなたのトラフィックを見たくないので、あなたのコンピュータからリモートコンピュータに直接接続するようにVPNを設定することができます。ルーティングされたすべてのパケットはノートブックを離れる前に暗号化されるため、100%エンドツーエンドの範囲を確保できます。

関連情報