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


10

序文:私が探しているのは、上記と同じ形式の明示的な指示です。つまり、runのようなものです。「...マシンXでコマンドXを実行し、マシンBでコマンドYを実行します...」

私のラップトップ(マシンA)からマシンBに機能する靴下プロキシがあります。

[A]$ ssh -ND 8888 B

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

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

[B]$ ssh -ND 8157 C

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

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

つまり、AからCまで、Firefoxのすべてのsocksリクエストを何らかの方法で転送します。AとCはお互いを直接見ることはできませんが、どこにでも完全なルートSSHアクセスがあります。すべてのマシンはDebianです。

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


-L 8888:B:8157[A] だけでいいの?
bdecaf 2014年

@bdecaf与えられたコマンドに加えて?代わりに?FireFox設定に変更はありませんか?
user124114 2014年

[A]のためだけに。あなたが説明するように残りの部分。
bdecaf 2014年

ssh -L 8888:B:8157失敗しました。ホスト名パラメータが必要です。より完全なエンドツーエンドの回答を提供できますか?うまくいけば受け入れます。
user124114 2014年

Bは本当にあなたのマシンの名前ですか?
bdecaf 2014年

回答:


12

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

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

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

これは、A-> BおよびB-> 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に、チェーン内の以前のホストに一致する追加のフォワーダーが必要であることに注意してください。

参照:


行ごとの変換:-1. 57のホストBから動的ポートを転送し、Bからポート56を公開し、Bからポート55を公開します。-2.ホストCからポート56で動的ポートを転送し、公開します。ポート55からC-3.ホストDからポート55で動的ポートを転送します-最終的に、各ステップでSSHを介して、すべてのホストからのSocksプロキシになります。ポート57〜55は、B、CおよびDにおけるエンドポイントとプロキシを含むであろう
レイフォス

無料のsshプロキシはありますか?見つかりませんでした。
aemonge

4

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.28157は2番目のSOCKSプロキシサーバーのIPアドレス、2番目のSOCKSプロキシはリッスンしているポート、など。

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

トラブルシューティングの目的で、3つすべてを試す前に、まず一度に1つのプロキシを使用してそれを機能させることをお勧めします。;)

参照:

  • 公式のプロキシチェーンWebサイト(最新バージョンは3.1、2006年にリリースされました):http ://proxychains.sourceforge.net
  • proxychains-ng(2015年の時点で実際に維持されている元のプロキシチェーンのフォーク)のWebサイト:https : //github.com/rofl0r/proxychains-ng

プロキシチェーンはプロキシも設定しますか?または単に既存のプロキシへの接続を手助けしますか?
glallen 2015

Proxychainsは、既存のプロキシサーバーにのみ接続します。
ジェームズ

その場合、「適切な方法...」というフレーズには同意しません。問題は、Firefoxを既存のプロキシに転送するだけでなく、複数のマシンでチェーンするプロキシの設定について具体的に話しているためです。たぶん-「プロキシが配置された後の代替方法」は有益ですが、ストレートsshの使用がどういうわけか不適切であることを示唆するものではありません。ただし、追加の背景情報は良好です。ありがとう。編集すると、私の賛成票が届きます。
glallen 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.