Ticket #17120

ポート転送のダイナミック(Socks)対応

Eröffnet am: 2009-06-04 17:26 Letztes Update: 2017-08-26 22:19

Auswertung:
Verantwortlicher:
Status:
Geschlossen
Komponente:
Priorität:
5 - Mittel
Schweregrad:
5 - Mittel
Lösung:
Gefixt
Datei:
1
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

ポート転送のタイプで、ダイナミック(Socks)に対応していると便利。

例えば、ウェブブラウザのプロキシ設定でダイナミック転送のポートをSocksプロキシに設定すると、ssh接続先をプロキシサーバとして利用できる。

Ticket-Verlauf (3/10 Historien)

2009-06-04 17:26 Aktualisiert von: doda
  • New Ticket "ポート転送のダイナミック(Socks)対応" created
2009-10-15 22:53 Aktualisiert von: (del#1144)
Kommentar

UI やコマンドラインを作ってみましたが、肝心のパケットのやりとり部分がわかりませんでした。

現在の accept_wnd_proc では反対側に素通しにしています。SOCKS をサポートするには accept_local_connection に行く前に接続元とやりとりを繰り返し(SOCKS 4 なら 1 往復、SOCKS 5 なら認証を NO AUTHENTICATION REQUIRED にして 2 往復)、大丈夫ならその後素通しにする必要があります。しかしどう実装したらいいのかよくわかりませんでした。

これだけではあれなので、SOCKS そのものについて調べてました。


SOCK には次の 7 種類があります。

CONNECTBINDUDP
SOCKS 4
SOCKS 4A
SOCKS 5

※ PuTTY は CONNECT のみサポートしているようです。


SOCKS 4 は IPv4 の IP アドレス接続をサポートしています。IPv6 はサポートしていません。

SOCKS 4A は SOCKS 4 の拡張で、IPv4 のホスト名接続をサポートしています。

SOCKS 5 は、IPv4 および IPv6 の IP アドレス接続と、ホスト名接続をサポートしています。

※ PuTTY は SOCKS 5 の IPv6 接続をサポートしていません。

※ ホスト名接続の場合には名前解決が SOCKS サーバにまかされますが、SOCKS サーバになる TTSSH ではなく転送先の sshd 側にそのまま投げるべきと思われます。

2017-06-28 23:48 Aktualisiert von: doda
  • Meilenstein Update from (Keine) to Tera Term 4.96 (closed)
  • Verantwortlicher Update from (Keine) to doda
  • Lösung Update from Keine to Accepted
2017-06-29 00:00 Aktualisiert von: doda
Kommentar
  • accept_local_connection で取りあえず接続を受け付ける。ただし SSH_open_chaneel は行わない。
  • read_local_connection でクライアントの要求を受け、SSH_open_channel を行う。その後は素通し。

というので行けそうな気がします。

あと、X11 forwarding で使っている channel filter の仕組みが利用出来るかもしれません。

ちょっと試してみます。

2017-07-05 20:11 Aktualisiert von: doda
Kommentar

試験的に実装してみました。現在のところ、CONNECT のみ対応となっています。(BINDは必要?)

現在のところ UI 部分は未実装で、コマンドラインオプションで /ssh-D1080 のようにして使うようになっています。

添付のパッチが作成された頃とは一部 UI が変わっていますが、この辺りはどうしましょうか?

仕組みとしては channel filter として転送に干渉し、クライアントからの要求に基づいて LtoR の転送を開いた後は filter を削除して、後は通常の LtoR 転送として動作します。

TTProxyを利用した以下の ssh 接続が出来る事を確認しています。

  • SOCKS4: IPv4アドレス
  • SOCKS4a: ドメイン名
  • SOCKS5: IPv4アドレス, IPv6アドレス, SOCKS5: ドメイン名

また、IEでSOCKSプロキシを設定した状態でいくつかのサイトの閲覧が行える事を確認しています。 ただし、コネクションを大量に張ろうとして、チャネルが開けなくなる事がありました。

また一部のエラー処理に問題があるのか、SOCKS転送を提供している Tera Term で、 キーボード入力してもサーバが反応しなくなる事がありました。

リリースまでに安定したらいいなあ。

2017-07-07 07:04 Aktualisiert von: (del#1144)
Kommentar

UIを作成しました。

TODO: 同じホスト・ポートでのリッスンをチェックしてエラーにしていますが、L内とD内でのチェックだけではなくLとDをまたいだチェックも必要です。

2017-07-08 21:55 Aktualisiert von: (del#1144)
Kommentar

LとDをまたいだチェック

sort して前後で同じ設定かをチェックしているので、チェック方法の修正が必要

2017-07-13 19:06 Aktualisiert von: doda
Kommentar

リッスンポートのチェックを追加しました。

あと何か必要な物ってありましたっけ?

2017-08-26 22:19 Aktualisiert von: doda
  • Ticket Close date is changed to 2017-08-26 22:19
  • Status Update from Offen to Geschlossen
  • Lösung Update from Accepted to Gefixt
Kommentar

まだ不安定な気がしますが、一旦クローズします。

現在判明している残件は別チケットで。 #37464

Dateianhangliste

Bearbeiten

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Anmelden