Raspberry Piで、ブラウザからアクセスできるリモートデスクトップゲートウェイを構築する – GUACAMOLE

Windows Server Essentialsには、外部のネットワークからリモートWebアクセスサイトを経由して、ネットワーク内のクライアントコンピューターにアクセスできる機能があります。

デバイス欄に表示されたオンライン状態のコンピューターをクリックすると、Microsoftのリモートデスクトップクライアントから接続ができる.rdpファイルがダウンロードできます。

この機能は、Windows Serverのリモートデスクトップゲートウェイ機能を利用して構築されています。

同じようなことをRaspberry Piでできないか?

Windows Server Essentialsの特徴的な機能の1つであるこのリモートデスクトップゲートウェイ機能を、5,000円程度と安価に購入できるRaspberry Piで代替できないかと考えてみました。

Raspberry Pi上に、Apache Guacamoleを構築する

候補を検討していると、HTML 5を利用して、ブラウザからリモートデスクトップ接続できるApache Guacamoleをみつけました。マイクロソフトのRDPだけでなく、VNCやSSHもサポートするため、Windows以外のホストにアクセスする際にも便利に利用できそうです。

また、ブラウザを利用するため、クライアントもブラウザさえあればよいのも便利そうです。最近ではiOSにもAndroidにもMicrosoft純正のRDPクライアントアプリが用意されていますが。

事前準備:認証用のMySQLのインストール

認証にデータベースを用いる構成とすることで、管理ポータル画面でユーザーや接続設定の管理が可能になることから、今回は認証情報の保存にMySQLを利用する構成にチャレンジます。

Guacamoleのサイトにある、データベース認証の構成ガイドを参考に設定していきます。

  1. MySQLのインストール
  2. 初期設定をします。

    パスワードは設定されていないためカレントパスワードは何も入力せずエンターを押下します。新しいパスワードを設定します。匿名ユーザーやテストデータベースの削除は好みに応じて選択します。

  3. Guacamole用のデータベース作成
    Guacmoleで利用するデータベースを作成します。’パスワード’は自身で任意のパスワードを設定してください。

Guacamoleのインストール方法

こちらのページを参考にインストールしてみます。Raspberry PiにSSHで接続して、コマンドを入力していきます。

  1. システムのアップデート

  2.  必要となる依存パッケージをインストールします。

  3. オプションのパッケージをインストールします。
  4. Guacamole サーバーとクライアントパッケージをダウンロードします。

    ダウンロードするパッケージのバージョンはGuacamoleのサイトから最新のバージョンを確認して読み換えてください。
  5. Guacamoleサーバーをビルドしてインストールします。

    パッケージのバージョンも、上記4同様に読み替えてください。
  6. クライアントをビルドします。

    クライアントパッケージのバージョンも上記4同様に読み替えてください。
  7. スキーマーのインポート
  8. jdbcのドライバーをインストールします。
  9. jetty9 サーバーをインストールします。
  10. Guacamoleを展開します。
  11. データベース認証用のjarをextensionsフォルダー配下に配置します。
  12. nanoエディタで、”guacamole.properties”を新規作成します。
  13. 次のテキストをコピーしてペーストします。Ctrl+Xを押下して、その後[Y]を押下、エンターを押下して保存します。

  14. raspberry piを再起動します。

Guacamoleへのログイン

  1. http://raspberry piのIPアドレス:8080/guacamole にアクセスします。

  2. 初期のユーザー名とパスワードは いずれもguacadmin になっています。ログインすると以下のような画面になります。

  3. 右上のユーザー名の隣に表示されている▼を押下し、[SETTINGS]を押下します。

    [Users]タブを押下。

    guacadminをクリックします。表示された画面で、パスワードを変更したり権限などの設定ができます。


    デフォルトのパスワードを変更したら、[New User]から新しいユーザーを追加します。

  4. [Connections]を押下すると、接続先の設定を管理できます。

  5. [New Connection]を押下して、接続先を追加します。リモートデスクトップやSSH,VNCなどが選択できます。

    接続先の設定では、GUACAMOLE PROXY PARAMETERSに、
    Hostname:localhost
    Port:4822
    を入力してください。

  6. 設定後は、ログイン後のHome画面に以下のように接続先が表示されます。

うまくつながらず、ループしてしまう場合は、[Ctrl]+[Alt]+[Shift]を押下すると設定メニューを開くことができます。

Windowsに接続する場合、以下の2つにチェックをつける必要があります。

  • Ignore server certificate
  • Disable audio

Windows Server 2016には、以下のレジストリの修正をすることで接続することができました。

参考:Guacamole, RDP, Windows 10 and Windows Server 2016

これで、Webページ上から内部ネットワークのサーバーやクライアントPCにRDP/VNC/SSHなどで接続するポータルを作成することができました。あとは、Raspberry Piを外部からアクセスできるように公開すればOKです。Raspberry PiですのでDDNSを使うこともできますから、自宅ネットワークのWAN側にアサインされているIPアドレスが変わってもアクセスできるサイトを構築できます。

自宅ではフレッツ光のIPoE接続ですが、サーバーはPPPoEセッションを張って公開しています。IPoE上でもサーバー公開したくなり、あえて今回はRaspberry PiとDDNS接続を利用してIPoE接続ルートでRaspberry Piを外部公開してみました(IPoEでも占有できるポート番号を用いて公開しています)。無事、スマホからもアクセスできるようになりました。

今回はRDPの代替にチャレンジしましたが、ほかにもVPNサーバーやファイルサーバーとしての機能を加えることもできますので、チャレンジしてみてはいかがでしょうか。

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする