guacamoleで作るリモートゲートウェイ
Oracle Cloud Infrastructure Advent Calendar 2019
Oracle Cloud always free Advent Calendar 2019
の5日目です。
今日はリモートゲートウェイ用のソフトウェア(apache guacamole)をalways freeのComputeインスタンスに導入しようと思います。
guacamoleはWEBベースのソフトウェアなので、今回はポート58443(SSL)で公開しようと思います。guacamoleの構築が終わったら、起動済みのOracle Cloud上のWindowsインスタンス★に接続します。
★always freeではないので、あくまで動作確認用です。
まずは、Oracle Cloud側のセキュリティポートの設定です。
〇セキュリティリストの追加
oracle cloudコンソールから
ネットワーキング-仮想クラウド・ネットワーク-VirtualCloudNetwork-XXXXXXXを選択
パブリック・パブリックサブネットをクリック
Default Security List for VirtualCloudNetwork-XXXXXXXXXをクリック
イングレス・ルールに以下を追加
ソース 0.0.0.0/0
IPプロトコル TCP
宛先ポート範囲 58443
イングレス・ルールに以下を追加
ソース 10.0.0.0/24
IPプロトコル TCP
次にOracle Linux側でも同様にポート58443 を公開します。
#firewalld設定ファイルのコピー
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/nginx-58443.xml
sudo vi /etc/firewalld/services/nginx-58443.xml#設定ファイルの編集
#<port protocol="tcp" port="22"/>
<port protocol="tcp" port="58443"/>sudo firewall-cmd --permanent --add-service=nginx-58443
#設定のリロード
sudo firewall-cmd --reload#変更の状態確認
sudo firewall-cmd --list-all#servicesにnginx-58443があればOK
公開ポートの設定が終わったら、guacamoleを導入します。
guacamoleはdocker上で動作させることができます。
SSL化するにあたり、nginxをguacamoleのproxyサーバとして動作させます。
(guacamoleのproxyとして動作するようnginxのdockerイメージを用意しました)
最初にDB初期化用のsqlファイルを出力します。
sudo docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
次にdocker-compose用のymlファイルを作成します。
cat <<EOF > docker-compose.yml
version: '3'
services:
nginx:
image: s4ragent/nginx:latest
container_name: nginx
hostname: nginx
ports:
- '58443:443'
guacd:
image: guacamole/guacd:latest
container_name: guacd
hostname: guacd
expose:
- '4822'
guacamole:
image: guacamole/guacamole:latest
container_name: guacamole
hostname: guacamole
ports:
- '8080:8080'
environment:
MYSQL_HOSTNAME: 'mysql'
GUACD_HOSTNAME: 'guacd'
MYSQL_DATABASE: 'guachamole'
MYSQL_USER: 'guachamole'
MYSQL_PASSWORD: 'guachamole'
mysql:
image: mysql:5.7
container_name: mysql
hostname: mysql
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_DATABASE: 'guachamole'
MYSQL_USER: 'guachamole'
MYSQL_PASSWORD: 'guachamole'
volumes:
- './initdb.sql:/docker-entrypoint-initdb.d/initdb.sql:z'
EOF
docker-compose.ymlファイルが用意できたら、コンテナを起動します。
sudo /usr/local/bin/docker-compose up -d
Creating network "opc_default" with the default driver
Creating mysql ... done
Creating nginx ... done
Creating guacd ... done
Creating guacamole ... done
作成が完了したら以下のURLにアクセスします。
https://computeインスタンスのIP:58443/guacamole/
初期パスワードはguacadmin/guacadminです。
Settings-> Preferences でまずはパスワードを変更しましょう。
パスワードを変更したらWindowsインスタンスに接続する設定を作成します。
Settings-> connectionから作成します。
設定が終わったらHomeから接続します。
画面上の10.0.0.6をクリックするとWindowsインスタンスへの接続が始まります。
今回はRDP接続を紹介しましたが、SSHやVNC,TELNETなども使用できます。
非常に便利なので、ぜひ使ってみてください。
<参考文献>
ブラウザ経由で Windows Server にリモート接続ができる「Apache Guacamole」を Docker Compose で起動する - kakakakakku blog
docker-composeで作成されるものの名前を明示的に指定する方法 - Qiita