🌊

自作プログラム rdgw の紹介

2024/03/21に公開

rdgw の紹介

rdgw という OSS な自作ソフトを作ったのですが、とても便利で需要もわんさかあるのに、エゴサしても引っかからず、自分で紹介記事を書くことにしました。

なにをするためのもの?

自宅においてある Microsoft の Windows Pro 以上で標準で付いているリモートデスクトップ(通称 RDP)をインターネットからアクセスしようとすると、通常は TCP ポート 3389番を外からアクセスできるようにしなければいけません。

ところが、 Windows Server には RDゲートウェイという、 HTTPS 経由で RDP アクセス可能にできるツールが標準で入っており、これを使用すると、 3389番を開くことなしに、 TCP 443番の HTTPS だけでアクセスできるようなります。

残念ながら、この RDゲートウェイは Windows Server にしか入っておらず、これのためだけに Windows Server を動かすのは大変です。

でも、この RDゲートウェイは TSGW として Microsoft から仕様が公開されているので、これをもとに linux 上で実行すべく、 Go言語で作成しました。

動作画面

百聞は一見に如かず、スクリーンショットを貼っていきます。

と言っても、サーバ上で動くデーモンなので、なにか目に見えるものがあるわけではないので、このソフトがあるとどのようなことが出来るのかを見せていきます。

まずはリモートデスクトップを立ち上げます。左下の「オプションの表示」をクリックして、タブを表示させます。タブの「詳細設定」を開きます。

「任意の場所から接続する」の「設定」ボタンを押します。

ここで、 RDゲートウェイのアドレスを入力します。

このまま接続して認証が完了すると、 RDゲートウェイを通して、イントラネット内の RDP サーバにリモートデスクトップ接続できるようになります。

便利だと思いませんか?

インストール方法

バイナリ配布をしていないので、まずは Go言語をビルドできるように環境を整えて下さい。 git もお願いします。

リポジトリから clone してきます。

$ git clone https://github.com/tamx/rdgw.git

ビルドします。

$ go build

これだけでバイナリ作成は終わりなのですが、 RDゲートウェイは TLS が必要なのに、 rdgw には TLS が入っていません。他のソフトを使用して TLS を使えるようにしないといけません。

また手前味噌で申し訳有りませんが、私の centrifuge という OSS を以下のようにして別のディレクトリで clone してビルドして下さい。

$ git clone https://github.com/tamx/centrifuge.git
$ go build

これで rdgw と centrifuge のバイナリが出来ました。

rdgw の方は以下のようにして立ち上げると、ユーザ名が "tam"、パスワードが "123456" として、 TCP 13389番で待ち受けます。

$ rdgw tam:123456

centrifuge の方は以下のようにして立ち上げて下さい。このとき、 Let's encrypt を使用して TLS署名を取得するので、 TCP 80番 -> TCP 10080番、 TCP 443番 -> TCP 10443番にポート転送をするようにして下さい。

$ centrifuge -n example.com -p 0.0.0.0:10443/ssl RDG:127.0.0.1:13389

この例だと、 "example.com" というホスト名で TLS署名を取得しようとします。

これで設置は完了です。 RDゲートウェイとして "example.com" が使えるようになりました。

最後に

とても便利なので、是非使ってみて下さい。

なお、 Android や iOS の RDP アプリでも使えるのですが、最近の freerdp 系列は何故か繋がらなくなりました。すみません。

Greek Alphabet Software Academy

Discussion