「ローカルポートフォワーディング」と「ダイナミックポートフォワーディング」の違い


13

「ローカルポートフォワーディング」と「ダイナミックポートフォワーディング」の違いを理解しようとしています。

「ローカルポートフォワーディング」のsshコマンドでは、宛先ホストを常に指定する必要がありますか?

「動的ポート転送」の「動的」とは、「動的ポート転送」のsshコマンドで、宛先ホストを指定する必要がないことを意味しますか?はいの場合、宛先はいつ指定されますか?


回答:


15

はい。ローカル転送を使用する場合、宛先IPとポートを指定する必要があります。からman ssh

 -L [bind_address:]port:host:hostport
         Specifies that the given port on the local (client) host is to be
         forwarded to the given host and port on the remote side.

明らかに、バインドアドレスのみがオプションです。

いいえ、動的転送を使用する場合、宛先ホストまたはポートを指定できません。動的転送では、SSHはSOCKSプロキシとして機能します。再びマンページから(強調鉱山):


 -D [bind_address:]port
         Specifies a local “dynamic” application-level port forwarding.
         This works by allocating a socket to listen to port on the local
         side, optionally bound to the specified bind_address.  Whenever a
         connection is made to this port, the connection is forwarded over
         the secure channel, and the application protocol is then used to
         determine where to connect to from the remote machine.  Currently
         the SOCKS4 and SOCKS5 protocols are supported, and ssh will act
         as a SOCKS server.

を使用すると-L、SSHはトラフィックを理解しようとしません。ローカルポートで受信したすべてをターゲットポートに送信するだけです。接続が確立された時点でターゲットポートを決定します。を使用すると-D、SSHはプロキシサーバーとして機能するため、複数のポートからの接続を処理できます(たとえば、SOCKSプロキシとして使用するように構成されたブラウザーは、同じ接続を介してHTTP、HTTPS、FTPなどにアクセスできます)。他のプロキシサーバーと同様に、トラフィックを使用して宛先を決定します。


1
ありがとう、ムル!動的転送がプロキシと呼ばれるのに、ローカル転送はプロキシと呼ばれないのはなぜですか?定義では、sshサーバー、sshクライアント、またはその両方がローカル転送プロキシ(サーバー)ですか?unix.stackexchange.com/a/234184/674-
ティム

1
@Timは、プロキシサーバーがプロキシしているプロトコルを理解します。ポートフォワーディングでは、SSHプロトコルはその方法を来ているかを理解する試みませんが、で-D、それが持っているデータを送信するために理解するために、に。
ムル

ありがとう。私はコンピューターネットワークのいくつかの教科書(タネンバウムなど)で、あなたのプロキシ(サーバー)の定義を検索しましたが、満足していませんでした。概念の学習に推奨する本はありますか?
ティム

動的ポート転送で、プロキシサーバー、sshクライアント、sshサーバー、またはその両方はどれですか?
ティム

@Tim Tanenbaumは私が勉強した唯一の本でした。残りは物を使うことから来ます。
ムル

0

この概念を学習する別の方法は、クライアントがAmazonのElastic Map Reduce(EMR)クラスターに接続する方法を調べることです。EMRには公開するローカルアプリが多数あり、これらは通常SSHトンネルを介してアクセスされます。

クライアントには2つのオプションがあります。A)ローカルポート転送SSHコマンド:ssh -i key.pem -L 8157:abcd:8088 hadoop @ abcd

ここで、クライアントは、たとえば、localhostの8157がabcd:8088に転送されると言います。クライアントはlocalhostにリクエストを行う必要があります 。http:// localhost: 8157クライアントは、これらのそれぞれに対してssh接続を確立する必要があります。

B)動的ポート転送ここでは、単一のSSHコマンドが使用されます:ssh -i key.pem -D 8157 hadoop @ abcd

ポート8157に着信するトラフィックは、sshトンネル経由でルーティングされます。トラフィックの宛先は、URLの宛先になります。たとえば、Webサーバーでプロキシクライアントを使用し、一部のhttp URIをリダイレクトしてプロキシを使用できます。1つのコマンドで8089,8090のすべてのアプリケーションにアクセスできます。

参照については、次のドキュメントを参照してください:https : //docs.aws.amazon.com/emr/latest/ManagementGuide/emr-web-interfaces.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.