開発日誌:LXD デスクトップRDP
今日の成果!
無事Ubuntu20サーバー(CLI)環境のLXD GUIコンテナにRDP接続出来ました。
クライアント側は、Macになります。
まじで感動です。
Cloud-initでプロファイル作成
まずは、今回の環境を構築するためのcloud-initファイルを作成
lxc config edit vm-mana << EOF
config:
security.nesting: "true"
security.privileged: "true"
user.user-data: |
#cloud-config
timezone: Asia/Tokyo
locale: ja_JP.utf8
package_upgrade: true
users:
- name: smith
uid: 1001
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
ssh_authorized_keys:
- <ホストの公開鍵の中身全部(ファイルパスではないです。)>
- openssh-server
- gnupg
- wget
- tightvncserver
- ubuntu-desktop
- xrdp
- tigervnc-standalone-server
- language-pack-ja-base
- language-pack-ja
runcmd:
- wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | apt-key add -
- wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | apt-key add -
- wget https://www.ubuntulinux.jp/sources.list.d/focal.list -O /etc/apt/sources.list.d/ubuntu-ja.list
- apt update -y
- apt upgrade -y
description: ""
devices: {}
name: myProfile
used_by: []
EOF
このプロファイルとデフォルトプロファイルを使いコンテナを構成
コンテナインストール
Ubuntu20.04のコンテナイメージを使ってVMmanaというコンテナを作成します。
lxc launch ubuntu:20.04 VMmana -p default -p vm-mana
cloud-initで構成管理がされるので、実行状態を確認する場合は次のコマンドを打ちます。
lxc exec VMmana -- cloud-init status --wait
ダウンロードしたコンテナを確認
lxc list
作成されたコンテナを確認
+--------+---------+---------------------+------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+--------+---------+---------------------+------+-----------+-----------+
| VMmana | RUNNING | 10.200.0.209 (eth0) | | CONTAINER | 0 |
+--------+---------+---------------------+------+-----------+-----------+
コンテナが稼働してIPも振られているのがわかります。
SSH接続設定
プロファイルでホスト側のSSH公開鍵は設定済みなのでSSH公開鍵接続でコンテナないに接続します。
ssh -i id_key 10.200.0.209
RDPポートの接続
コンテナのネットワークからホストへアクセスできるよにProxy設定をします。
lxc config device add VMmana xrdp1 proxy listen=tcp:0.0.0.0:3389 connect=tcp:127.0.0.1:3389 bind=host
lxc config device add VMmana xrdp2 proxy listen=udp:0.0.0.0:3389 connect=udp:127.0.0.1:3389 bind=host
コンテナの外側(ホスト側)からの接続ネットワークが無制限になっていますが実際に使う場合は、きっちり絞って設定します。
設定を確認
lxc config device show VMmana
xrdp1:
bind: host
connect: tcp:127.0.0.1:3389
listen: tcp:0.0.0.0:3389
type: proxy
xrdp2:
bind: host
connect: udp:127.0.0.1:3389
listen: udp:0.0.0.0:3389
type: proxy
ファイヤーウォール設定
xrdp用のUFWアプリケーションファイルを作成
echo '
[xrdp]
title=X Window System Remote Desktop
description=XRDPサーバー
ports=3389/udp|3389/tcp
' |sudo tee /etc/ufw/applications.d/xrdp
UFWのアプリケーションとして読み込まれているかを確認
sudo ufw app list
# こんな感じで追加されています。
利用可能なアプリケーション:
OpenSSH
xrdp
UFWに設定を読み込み確認
sudo ufw app update xrdp
sudo ufw app info xrdp
ファイヤーウォールを許可する。
sudo ufw allow from 192.168.99.70 to any app "xrdp"
sudo ufw reload
sudo ufw status
あとはクライアントからRDP接続すると最初のスクリーンショットのようになります。
いやはや、ついにここまで来ました。
感無量です!
あとは、細かい設定を見直してVMのコントローラーをインストールしてVM制御できるようにしたいと思います。
あとは、ホスト側のNVIDIAのGPUを共有できるようにもしておきたいです。
以上です。それではまた明日ありがとうございました。