チケット #17120

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

登録: 2009-06-04 17:26 最終更新: 2017-08-26 22:19

報告者:
担当者:
チケットの種類:
状況:
完了
コンポーネント:
マイルストーン:
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
1
投票
点数: 0
No votes
0.0% (0/0)
0.0% (0/0)

詳細

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

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

チケットの履歴 (10 件中 3 件表示)

2009-06-04 17:26 更新者: doda
  • 新しいチケット "ポート転送のダイナミック(Socks)対応" が作成されました
2009-10-15 22:53 更新者: (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 更新者: doda
  • マイルストーン(未割り当て) から Tera Term 4.96 (完了済み) に更新されました
  • 解決法なし から 受領 に更新されました
  • 担当者(未割り当て) から doda に更新されました
2017-06-29 00:00 更新者: doda
コメント
  • accept_local_connection で取りあえず接続を受け付ける。ただし SSH_open_chaneel は行わない。
  • read_local_connection でクライアントの要求を受け、SSH_open_channel を行う。その後は素通し。

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

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

ちょっと試してみます。

2017-07-05 20:11 更新者: 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 更新者: (del#1144)
コメント

UIを作成しました。

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

2017-07-08 21:55 更新者: (del#1144)
コメント

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

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

2017-07-13 19:06 更新者: doda
コメント

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

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

2017-08-26 22:19 更新者: doda
  • チケット完了時刻2017-08-26 22:19 に更新されました
  • 状況オープン から 完了 に更新されました
  • 解決法受領 から 修正済み に更新されました
コメント

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

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

添付ファイルリスト

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする