Ticket #17120

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

오픈 날짜: 2009-06-04 17:26 마지막 업데이트: 2017-08-26 22:19

Reporter:
소유자:
Status:
Closed
Component:
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
1
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

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

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

Ticket History (3/10 Histories)

2009-06-04 17:26 Updated by: doda
  • New Ticket "ポート転送のダイナミック(Socks)対応" created
2009-10-15 22:53 Updated by: (del#1144)
댓글 올리기

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 Updated by: doda
  • Milestone Update from (None) to Tera Term 4.96 (closed)
  • Resolution Update from None to Accepted
  • 소유자 Update from (None) to doda
2017-06-29 00:00 Updated by: doda
댓글 올리기
  • accept_local_connection で取りあえず接続を受け付ける。ただし SSH_open_chaneel は行わない。
  • read_local_connection でクライアントの要求を受け、SSH_open_channel を行う。その後は素通し。

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

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

ちょっと試してみます。

2017-07-05 20:11 Updated by: doda
댓글 올리기

試験的に実装してみました。現在のところ、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 Updated by: (del#1144)
댓글 올리기

UIを作成しました。

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

2017-07-08 21:55 Updated by: (del#1144)
댓글 올리기

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

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

2017-07-13 19:06 Updated by: doda
댓글 올리기

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

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

2017-08-26 22:19 Updated by: doda
  • Ticket Close date is changed to 2017-08-26 22:19
  • Status Update from Open to Closed
  • Resolution Update from Accepted to Fixed
댓글 올리기

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

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

Attachment File List

Edit

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