web-dev-qa-db-ja.com

SOCKSプロキシをチェーンする方法は?

まえがき:私が探しているのは、上記と同じ形式の明示的な命令です。つまり、「…マシンAでコマンドXを実行し、次にマシンBでコマンドYを実行する…」のようなものです

ラップトップ(マシンA)からマシンBへのソックスプロキシが機能しています。

[A]$ ssh -ND 8888 B

Aのローカルポート8888でSOCKSプロキシを使用するようにFirefoxを設定すると、Aでのブラウジングが機能します。ここまでは順調ですね。

しかし、マシンBとCの間にソックスプロキシもあります。

[B]$ ssh -ND 8157 C

したがって、BのFirefoxソックスプロキシを8157に設定して、CにいるかのようにBを参照できます。

Cへの接続を使用しながらFirefoxをローカル(A上)で使用できるように、2つのプロキシをチェーンする方法はありますか?

つまり、どういうわけか、FirefoxのすべてのsockリクエストをAからCまで転送します。AとCはお互いを直接見ることはできませんが、どこでもフルルートSSHアクセスが可能です。すべてのマシンはDebianです。

しないポート80のような単一のポートを転送したいが、完全にチェーンされたSOCKプロキシが必要であることに注意してください。

10
user124114

これが一部のVMで機能することを確認しました。

[A]$ ssh -tt -v -L8888:localhost:8157 user@B ssh -t -D 8157 user@C

[〜#〜] a [〜#〜]から、ローカルで8888から[〜#〜]の8157へのポートフォワードトンネルを開きます。 b [〜#〜]-L8888:localhost:8157。 Bへの接続を確立すると、リモートコマンドssh -t -D 8157 user@Cが実行され、[〜#〜] c [〜#〜]を介してSOCKSプロキシが提供されます。 。私が読んだことから、「-t」が必要なようですが、それでも理由を理解する必要があります。

これは、A-> BB-> Cからsshを2回呼び出す最初のホスト上の1つのコマンドであることに注意してください。 。以下で説明するように、これを個別のコマンドに分割することもできます。

ボーナス:3つのプロキシをチェーンするため...

つまり、A->B->C->D->Internet

[hostA]$ ssh -2 -C -D 55557 -L 55556:127.0.0.1:55556 -L 55555:127.0.0.1:55555 user@B
[hostB]$ ssh -2 -C -D 55556 -L 55555:127.0.0.1:55555 user@C
[hostC]$ ssh -2 -C -D 55555 user@D

ホップごとに、チェーン内の前のホストに追加の一致するフォワーダー-Lが必要であることに注意してください。

参照:

12
glallen

sSHを利用したglallenの優れた答えは、仕事を成し遂げるでしょう。ただし、これを実現する適切な方法は、proxychainsプログラムを使用することです。 ProxyChainsは、複数のプロキシサーバーを同時に簡単に活用できる強力なツールです。たとえば、ハッカーがインターネット攻撃を実行しているときに身元を隠すために使用します。世界中の多数のプロキシを連鎖させることにより、法医学捜査官がトラフィックを追跡することは事実上不可能になります。あなたが悪意のあるハッカーであることは言うまでもありません-それは多くの異なるユースケースで機能します。 ;)

ProxyChainsは、一部のLinuxディストリビューション(Kali Linuxなど)にデフォルトでインストールされます。たとえば、Ubuntu/Debianでは、次の手順を実行することで簡単にインストールできます。

  • Sudo apt-get install proxychains

Proxychainsは、/etc/proxychains.confで構成ファイルを探します。インストールしたら、既存のProxychains構成ファイル(存在する場合)をバックアップし、新しいファイルを作成します。

  • mv /etc/proxychains.conf /etc/proxychains-backup.conf
  • nano /etc/proxychains.conf

ここで、私が作成したこの構成例を貼り付けます。

strict_chain

proxy_dns

tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
socks4          192.168.1.1     8888
socks4          192.168.1.2     8157
socks4          192.168.1.3     6969

この例では、192.168.1.1は最初のSOCKSプロキシサーバーのIPアドレス、8888は最初のSOCKSプロキシがリッスンしているポート、192.168.1.2は2番目のSOCKSのIPアドレスです。プロキシサーバー、8157は、2番目のSOCKSプロキシがリッスンしているポートです。

ここで、コマンドラインからproxychains firefoxを実行してFirefoxを起動し、プロキシチェーンを活用します。 (Firefoxが最初に閉じられていることを確認してください。)これで、Firefoxが発信接続を確立するたびに、proxychainsプログラムは、この構成ファイルで指定したすべてのサーバーを介してプロキシされるようにトラフィックをカプセル化します。明確にするために、Firefoxの設定では、プロキシサーバーを指定しないでください。プロキシチェーンがすべてをバックグラウンドで処理します。

トラブルシューティングの目的で、3つすべてを試す前に、最初に一度に1つのプロキシを使用して動作させるようにしてください。;)

参照:

4
James