使ったばかりですこのガイド私の会社のプロキシをバイパスするためのSSHトンネルを作成します。一般的な「Putty」を使用する代わりに、「MobaXterm」(Unixツールも提供するパテに似たプログラム)を使用してトンネルを作成しました。
ssh -D 7070 -p 22 [email protected] sleep 9999
それからブラウザ(Firefox)を開いて使用するように言いました。靴下存在するローカルホストポート7070。
すべてがうまく機能していますが、基本的な技術が実際にどのように機能するのかわかりません。私は、一般的にプロセスがどのように進行するかを知っていますが、もっと深く入りたいと思います。
私の言葉は、現在私たちは私の知識を自動車の知識と比較できることを意味します。エンジン、ホイール4つなどがあることはわかりますが、エンジンが実際にガソリンを使って車を動かす方法はわかりません。これまで私が受けた2つの答えは、私がすでに知っている内容を説明してくれるだけです。私はCCNPを持っており、データセンターでネットワークエンジニアとして働いており、プログラミング方法を知り、Linux環境に関する十分な知識を持っています。完全な(20ページ未満のRFC長さ)回答を提供してください。
回答には以下を含める必要があります。
- デフォルトのトンネルオプションの説明。良い例はこの答えの絵です。SSHトンネルについて学ぶ
- どのトンネルをいつ、どの用途に使用するか(一般トンネル、リバーストンネル)
- トンネル前/後のWiresharkキャプチャ
- プロセスを説明する写真(結局私は視覚的な人です)
約束します。100点差し上げますこの問題に賞金をかけられるようになるやいなや。本当に良い答えが必要です。 (賞金を忘れた場合は、ilcon7e [at] gmail [dot] comに電子メールを送ってください。
編集する
問題が改善されました。
答え1
会社のファイアウォールによってブロックされていないWebサイトにアクセスすると、ブラウザはポート80(デフォルト)を介してURLにリストされているサーバーに要求を送信します。たとえば、このサイトにアクセスするために、当社のブラウザはポート80でサーバーと通信します。unix.stackexchange.com
プロキシ設定を指定するときは、localhost
URL が何であれ、すべてをポート 7070 に送信するようブラウザに指示します。プロキシサーバーは、クライアントに代わって単純にデータを取得するように設計されています。さまざまなプロキシサーバーが利用可能です(distoリポジトリをすばやく検索すると、一部が見つかります。squid
そのうちの1つであり、apache
Webサーバーnginx
もプロキシとして機能します)。プロキシがWebサイトにアクセスしようとするため、サーバーをインストールしても役に立ちません。あなたの代わりに、まだ会社のファイアウォールによってブロックされます。
ただし、リモートサイト()のデーモンssh
と一緒に-Dオプションを使用すると、サーバーがローカルとリモートの2つの部分に分割されることを除いて、プロキシサーバーのように動作します。sshd
yourserver.com
ssh
sshd
ブラウザからの要求は、ポートでリッスンしているコンピュータのクライアントhttp://unix.stackexchange.com
に送信されます。これにより、要求が暗号化されてリモートサーバーに送信されます。その後、要求を復号化して関連サーバー(やはりポート80)に送信し、戻りパス(サーバーが応答を返す必要があるIPアドレスとポート)をサーバーパス()に変更します。ssh
7070
sshd
unix.stackexchange.com
sshd
yourserver.com
Stack Exchange Webサーバーはこのプロキシについて何も知らず、サーバーのIPアドレスとポートに対してユーザーが要求するすべてのページに応答しますsshd
(この小さな変更のおかげで)。ただし、このサーバーは、要求がコンピュータssh
で実行されたことを知っているので(これらの情報テーブルを維持する)、それを暗号化して再送信します。ssh
あなたのコンピュータ上のサーバーはあなたのブラウザに返信を送り返し、ブラウザはあなたのためにウェブページを忠実に表示します。
ssh
これは分散エージェントのように機能します。ここで、「トンネル」は、プロキシが2つの部分に分割され、誰もがスヌーピングできない暗号化されたトンネルを介して互いに通信し(あなたの場合)、ファイアウォールによってブロックされないポートを使用しているという事実です。 (ポート22)。
答え2
非常に高いレベルの概要:
この
-D
オプションは、sshにSOCKSプロトコルを使用してこのポートで接続をリッスンするように指示します。 SSHに接続し、SOCKSプロトコルを使用するようにFirefoxを設定します。あなたは入力http://www.google.comブラウザにアクセスしてください。
FirefoxはこのSOCKSポートに接続します。 SOCKSは多くのことをすることができますが、私たちが興味を持っているのはこれです:FirefoxはSOCKSサーバー(ssh)に言います。 )www.google.comこれに対する答えは何ですか?」 (Firefoxは、sshがSSHトンネルを介して要求を転送することを知らず、実際には気にしません。)
ssh は、ssh 接続に沿って要求をリモートシステム (おそらく sshd) で実行中のエントリに転送します。
リモートコンピュータで実行されているプログラムは接続を確立し、Googleにデータを送信して応答を受け取ります。
要求に応じて、リモートコンピュータのプログラムは、コンピュータのSSH応答が何であるかを知らせます。
要求に応じて、コンピュータのSSHはFirefoxに何が応答するのかを伝えます。
FirefoxはそれがWebページであることを知って表示し始めます。
すべての画像、JavaScript、CSSなどについて複数回繰り返します。