コンテナ版Workspace ONE Tunnelを展開してみる
コンテナ版Workspace ONE Tunnelを展開してみる
Omnissa Workspace ONE UEM におけるセキュリティ機能の1つとして、 VPN を提供する Omnissa Workspace ONE Tunnel があります。
そのサーバー側コンポーネントとしては、最も代表的であり複数のゲートウェイサービス機能を有する Omnissa Unified Access Gateway のほかに、Tunnel ゲートウェイサービス機能のみを有するコンテナ版 Workspace ONE Tunnel が提供されています。
今回はコンテナ版 Workspace ONE Tunnel のデプロイを紹介していきます。
事前準備
参考資料
コンテナ版 Workspace ONE Tunnel の展開手順については以下を参考にしています。
- Tunnel Container 展開手順
- Deploying with Tunnel Container
https://docs.omnissa.com/bundle/Workspace_ONE_TunnelVSaaS/page/TunnelGateway-DeployContainer.html
今回は RHEL とのバイナリ互換のある AlmaLinux を利用するため、 Docker Docs の RHEL 向けドキュメントを参考にしています。
- Docker インストール
- RHEL | Docker Docs
https://docs.docker.com/engine/install/rhel/
なお、 CentOS は2021年末に RHEL とのバイナリ互換性としてのディストリビューションから、 RHEL のアップストリームとなる CentOS Stream へと移行していることを踏まえ、他のブログ等で言及されている CentOS 向けのリポジトリは使用していません。
動作要件
コンテナ版 Workspace ONE Tunnel では、Tunnel ゲートウェイサービスを実行するホスト、Tunnel コンテナをデプロイする Tunnel CLI ツール (dux) を実行するサーバーの2つが必要です。
それぞれのシステム要件は以下の通りです。
- Tunnel ゲートウェイサービスを実行するサーバー (以後、 Docker ホスト)
- ホスト OS 要件
- 任意の Linux ディストリビューション
- 一部組み込み Linux 環境は対応不可
- Linux 環境上に Docker がインストールされ動作している
- パスワード無し sudo での全コマンド管理者権限実行が可能
- 通信要件
- UEM Console API への接続
- AWCM への接続
- カスケード接続の場合はフロントエンドとバックエンドの通信が可能
- Tunnel CLI ツール (dux) を実行するサーバー (以後、管理ホスト)
- ホスト OS 要件
- CentOS/RHEL 7以上、または macOS
- CentOS/RHEL 7以上の場合
- yum/dnf での導入
- rpm パッケージでの導入
- macOS の場合
- 要 brew (HomeBrew, パッケージマネージャ)
- Tunnel コンテナイメージデータを指定パスへ格納
- CentOS/RHEL 7以上の場合
- /opt/omnissa/dux/images/
- macOS の場合
- Intel プロセッサ搭載機種の場合
- /usr/local/var/opt/omnissa/dux/images
- Apple シリコン搭載機種の場合
- /opt/homebrew/var/opt/omnissa/dux/images/
- 通信要件
- Tunnel サーバーへの ssh 接続が可能
なお、コンテナイメージ バージョン 24.10、および、 Tunnel CLI ツール バージョン 2.3 の時点では、コンテナ版 Workspace ONE Tunnel を利用した場合にアウトバウンドプロキシの指定が行えません。
そのため、 Tunnel ゲートウェイサービスが直接 UEM Console API および AWCM に接続が行える環境である必要があります。
また、「パスワード無し sudo での全コマンド管理者権限実行が可能」については、セキュリティの観点で考慮が必要な項目であるため、専用のユーザーを作成する方針とします。
前提条件
今回は以下の環境にて実施しています。
- 両サーバー共通
- 動作環境
- 仮想マシン
- OS
- AlmaLinux 9.5
- Minimal インストール
- RAM
- 8GB
- ストレージ
- 20GB
- 初期ユーザー構成
- root
- 無効化
- user
- 管理者ユーザー
- 製品バージョン情報
- Workspace ONE UEM コンソール
- 2410
- Tunnel コンテナイメージ
- 24.10.482-2024.11.28-2127985
- Tunnel CLI ツール
- 2.3.0.405
コンテナ版Workspace ONE Tunnelセットアップ
Workspace ONE Tunnel コンテナイメージの取得
Workspace ONE Tunnel のコンテナイメージ、および、 CLI ツールのインストールファイルは、Omnissa Customer Connect から取得が可能です。
ダウンロードには Omnissa Customer Connect アカウントでのサインインが必要です。
執筆時点の2025年4月では、以下のパスからたどることができました。
[Product and Accounts] > [All Products] > [Omnissa Workspace ONE Tunnel - View Download Components] > [Workspace ONE Tunnel for Linux - Go to Downloads] > [DOWNLOAD NOW]
以下のリンクにて、プラットフォーム別の選択ページを直接開くことも可能です。
Download Omnissa Workspace ONE Tunnel
なお、CLI ツールについては、今回の手順では本ファイルではなく専用リポジトリからの取得にて実施するため、ここでのダウンロードは行いません。
1. 管理ホスト:事前準備
Docker ホストへの接続に利用する ssh 鍵ペアを作成します。
- ssh 鍵ペアの作成コマンドを実行
$ ssh-keygen
- ssh 鍵ペアをデフォルトの保存先で作成するため Enter キーを押下
Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa):
- CLI ツールの仕様によりパスフレーズを利用できないためそのまま Enter キーを押下
Created directory '/home/user/.ssh'. Enter passphrase (empty for no passphrase):
- 再度そのまま Enter キーを押下
Enter same passphrase again:
- CLI ツールの仕様によりパスフレーズを利用できないため入力せずに Enter キーを押下
Your identification has been saved in /home/user/.ssh/id_rsa Your public key has been saved in /home/user/.ssh/id_rsa.pub The key fingerprint is: SHA256:2SIUcg6sqS57ta+oiKMO8P8LThcOAgI9AtTAV5tu6yw user@al9-dux The key's randomart image is: +---[RSA 3072]----+ |*+o.+.o | |o.oo.=o. | |o..+ oo | |..o .. o | |... .oo S . | |o. .oo.o . | |o ..ooo | |*..E+o | |X*. =*+. | +----[SHA256]-----+
- 作成した鍵ペアの公開鍵情報を表示、出力された文字列を控える
$ cat ~/.ssh/id_rsa.pub
2. Docker ホスト: Docker コンポーネントインストール
Docker ホストとするサーバーで Docker コンポーネントをインストールします。
今回は Docker 公式リポジトリからパッケージの取得を行います。
なお、 Docker 公式のドキュメントでは dnf-plugins-core のインストールが求められていますが、 AlmaLinux 9 では Minimal インストールであっても標準インストールされていたため省略しています。
- Docker 公式リポジトリをパッケージマネージャーに追加
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
- Docker パッケージをインストール
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
- 下記のようにパッケージのダウンロードおよびインストールが完了するまで待機
※[-y] オプションによりインストール時、 GPG Key の承認を自動的に実施しています。セキュリティ上、明確に GPG Key の確認を行う必要がある場合はオプションを外してください。Docker CE Stable - x86_64 70 kB/s | 32 kB 00:00 Dependencies resolved. ============================================================================================================================================================================================================== Package Architecture Version Repository Size ============================================================================================================================================================================================================== Installing: containerd.io x86_64 1.7.25-3.1.el9 docker-ce-stable 43 M docker-buildx-plugin x86_64 0.21.1-1.el9 docker-ce-stable 16 M docker-ce x86_64 3:28.0.1-1.el9 docker-ce-stable 20 M docker-ce-cli x86_64 1:28.0.1-1.el9 docker-ce-stable 8.3 M docker-compose-plugin x86_64 2.33.1-1.el9 docker-ce-stable 15 M Installing dependencies: container-selinux noarch 3:2.232.1-1.el9 appstream 55 k fuse-overlayfs x86_64 1.14-1.el9 appstream 66 k libslirp x86_64 4.4.0-8.el9 appstream 67 k slirp4netns x86_64 1.3.1-1.el9 appstream 46 k Installing weak dependencies: docker-ce-rootless-extras x86_64 28.0.1-1.el9 docker-ce-stable 3.2 M Transaction Summary ============================================================================================================================================================================================================== Install 10 Packages Total download size: 106 M Installed size: 422 M Downloading Packages: (1/10): libslirp-4.4.0-8.el9.x86_64.rpm 1.0 MB/s | 67 kB 00:00 (2/10): container-selinux-2.232.1-1.el9.noarch.rpm 799 kB/s | 55 kB 00:00 (3/10): fuse-overlayfs-1.14-1.el9.x86_64.rpm 953 kB/s | 66 kB 00:00 (4/10): slirp4netns-1.3.1-1.el9.x86_64.rpm 4.5 MB/s | 46 kB 00:00 (5/10): docker-ce-28.0.1-1.el9.x86_64.rpm 12 MB/s | 20 MB 00:01 (6/10): docker-buildx-plugin-0.21.1-1.el9.x86_64.rpm 9.7 MB/s | 16 MB 00:01 (7/10): docker-ce-rootless-extras-28.0.1-1.el9.x86_64.rpm 7.3 MB/s | 3.2 MB 00:00 (8/10): docker-ce-cli-28.0.1-1.el9.x86_64.rpm 14 MB/s | 8.3 MB 00:00 (9/10): containerd.io-1.7.25-3.1.el9.x86_64.rpm 17 MB/s | 43 MB 00:02 (10/10): docker-compose-plugin-2.33.1-1.el9.x86_64.rpm 30 MB/s | 15 MB 00:00 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 30 MB/s | 106 MB 00:03 Docker CE Stable - x86_64 27 kB/s | 1.6 kB 00:00 Importing GPG key 0x621E9F35: Userid : "Docker Release (CE rpm) <docker@docker.com>" Fingerprint: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 From : https://download.docker.com/linux/rhel/gpg Key imported successfully Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : docker-buildx-plugin-0.21.1-1.el9.x86_64 1/10 Running scriptlet: docker-buildx-plugin-0.21.1-1.el9.x86_64 1/10 Installing : docker-compose-plugin-2.33.1-1.el9.x86_64 2/10 Running scriptlet: docker-compose-plugin-2.33.1-1.el9.x86_64 2/10 Running scriptlet: container-selinux-3:2.232.1-1.el9.noarch 3/10 Installing : container-selinux-3:2.232.1-1.el9.noarch 3/10 Running scriptlet: container-selinux-3:2.232.1-1.el9.noarch 3/10 Installing : containerd.io-1.7.25-3.1.el9.x86_64 4/10 Running scriptlet: containerd.io-1.7.25-3.1.el9.x86_64 4/10 Installing : docker-ce-cli-1:28.0.1-1.el9.x86_64 5/10 Running scriptlet: docker-ce-cli-1:28.0.1-1.el9.x86_64 5/10 Installing : libslirp-4.4.0-8.el9.x86_64 6/10 Installing : slirp4netns-1.3.1-1.el9.x86_64 7/10 Installing : fuse-overlayfs-1.14-1.el9.x86_64 8/10 Running scriptlet: fuse-overlayfs-1.14-1.el9.x86_64 8/10 Installing : docker-ce-rootless-extras-28.0.1-1.el9.x86_64 9/10 Running scriptlet: docker-ce-rootless-extras-28.0.1-1.el9.x86_64 9/10 Installing : docker-ce-3:28.0.1-1.el9.x86_64 10/10 Running scriptlet: docker-ce-3:28.0.1-1.el9.x86_64 10/10 Running scriptlet: container-selinux-3:2.232.1-1.el9.noarch 10/10 Running scriptlet: docker-ce-3:28.0.1-1.el9.x86_64 10/10 Verifying : container-selinux-3:2.232.1-1.el9.noarch 1/10 Verifying : fuse-overlayfs-1.14-1.el9.x86_64 2/10 Verifying : libslirp-4.4.0-8.el9.x86_64 3/10 Verifying : slirp4netns-1.3.1-1.el9.x86_64 4/10 Verifying : containerd.io-1.7.25-3.1.el9.x86_64 5/10 Verifying : docker-buildx-plugin-0.21.1-1.el9.x86_64 6/10 Verifying : docker-ce-3:28.0.1-1.el9.x86_64 7/10 Verifying : docker-ce-cli-1:28.0.1-1.el9.x86_64 8/10 Verifying : docker-ce-rootless-extras-28.0.1-1.el9.x86_64 9/10 Verifying : docker-compose-plugin-2.33.1-1.el9.x86_64 10/10 Installed: container-selinux-3:2.232.1-1.el9.noarch containerd.io-1.7.25-3.1.el9.x86_64 docker-buildx-plugin-0.21.1-1.el9.x86_64 docker-ce-3:28.0.1-1.el9.x86_64 docker-ce-cli-1:28.0.1-1.el9.x86_64 docker-ce-rootless-extras-28.0.1-1.el9.x86_64 docker-compose-plugin-2.33.1-1.el9.x86_64 fuse-overlayfs-1.14-1.el9.x86_64 libslirp-4.4.0-8.el9.x86_64 slirp4netns-1.3.1-1.el9.x86_64 Complete!
- Docker コンポーネントを自動起動する設定を行うと同時に起動
$ sudo systemctl enable --now docker
- 以下のように出力されることを確認
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
3. Docker ホスト: SSH 待ち受けポートの限定
メーカー側の推奨として SSH サーボスを待ち受けるインターフェースの制限が求められているため、 SSH サービスの設定変更を行います。なお、実施しない場合でも展開自体は行えますが、展開検証時および展開時に警告が表示されます。
- SSH サービスの設定ファイルを編集
$ sudo vi /etc/ssh/sshd_config
- [ListenAddress] 行で待ち受けを行う IP アドレスを指定
ListenAddress 192.0.2.1 ※実際の Docker ホストの IP アドレスを指定
- SSH サービスをリロードして設定を反映
sudo systemctl reload sshd.service
4. Docker ホスト:管理用ユーザー追加
「パスワード無し sudo での全コマンド管理者権限実行が可能」を実現するにあたり、セキュリティ上のリスクを小さくするために、 以下の方針としています。
- 専用ユーザーを作成
- 専用ユーザーはパスワードログイン不可
- su による他ユーザーからの切り替えは不可
- 専用ユーザーは ssh で鍵ペアによるログインのみ許可
- 専用ユーザーのみ全コマンドで sudo のパスワード無しを設定
必要に応じて追加の対策を実施してください。
上記方針に従い、 Docker ホスト上に専用ユーザー dux を作成します。
- 専用ユーザー dux を UID 2000 でホームディレクトリを含めて作成
※UID は環境に応じて修正してください。$ sudo adduser -m -s /bin/bash -u 2000 -U dux
- dux ユーザーの パスワード付き sudo を許可するための設定ファイルを新規作成
$ sudo visudo -f /etc/sudoers.d/dux
- 以下の定義を記載して保存
dux ALL= NOPASSWD: ALL
- dux ユーザーのホームディレクトリに .ssh ディレクトリを追加
$ sudo -i -u dux mkdir /home/dux/.ssh
- 許可する ssh 鍵ペアの公開鍵を登録するファイルを新規作成
$ sudo -i -u dux vi /home/dux/.ssh/authorized_keys
- [1. 管理ホスト事前準備] - 6 で出力された公開鍵情報を記載して保存
- 許可する ssh 鍵ペアの公開鍵を登録するファイルのパーミッションを適切なものに変更
$ sudo -i -u dux chmod 0600 /home/dux/.ssh/authorized_keys
5. 管理ホスト: Tunnel CLI ツールのインストール
今回の手順では、 Linux 向けのリポジトリ登録による方法を記載します。
その他、 Linux 向けに Tunnel CLI ツールの rpm パッケージを用いてローカルインストールを行う方法、 macOS 向けのサードパーティ製パッケージマネージャである HomeBrew を用いてインストールする方法が提供されています。
- Tunnel CLI ツール用の専用リポジトリを作成
$ cat << EOF | sudo tee /etc/yum.repos.d/dux.repo [dux] name=Workspace ONE Tunnel CLI baseurl=https://packages.omnissa.com/ws1-tunnel/dux enabled=1 gpgcheck=0 EOF
- Tunnel CLI ツールをインストール
$ sudo dnf install -y dux
- 下記のようにパッケージのダウンロードおよびインストールが完了するまで待機
AlmaLinux 9 - AppStream 5.0 kB/s | 4.2 kB 00:00 AlmaLinux 9 - AppStream 5.3 MB/s | 15 MB 00:02 AlmaLinux 9 - BaseOS 4.3 kB/s | 3.8 kB 00:00 AlmaLinux 9 - BaseOS 6.6 MB/s | 17 MB 00:02 AlmaLinux 9 - Extras 4.2 kB/s | 3.3 kB 00:00 AlmaLinux 9 - Extras 16 kB/s | 13 kB 00:00 Workspace ONE Tunnel CLI 446 B/s | 1.6 kB 00:03 Dependencies resolved. ============================================================================================================================================================================================================== Package Architecture Version Repository Size ============================================================================================================================================================================================================== Installing: dux x86_64 2.3.0.405-1 dux 3.0 M Transaction Summary ============================================================================================================================================================================================================== Install 1 Package Total download size: 3.0 M Installed size: 9.1 M Downloading Packages: dux-2.3.0.405-1.x86_64.rpm 1.4 MB/s | 3.0 MB 00:02 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 1.4 MB/s | 3.0 MB 00:02 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Running scriptlet: dux-2.3.0.405-1.x86_64 1/1 Installing : dux-2.3.0.405-1.x86_64 1/1 Running scriptlet: dux-2.3.0.405-1.x86_64 1/1 installed Verifying : dux-2.3.0.405-1.x86_64 1/1 Installed: dux-2.3.0.405-1.x86_64 Complete!
- Tunnel CLI ツールの動作確認のためバージョン情報を確認
$ dux version
- 下記のようにバージョン情報が出力されることを確認
Workspace ONE Tunnel CLI (dux) 2.3.0.405
- Tunnel CLI ツールの初回設定を実施
$ dux init
- 下記のように初期化成功と出力されることを確認
Deployment manifest initialized successfully in /opt/omnissa/dux/
6. 管理ホスト: Tunnel コンテナ展開準備
Omnissa Workspace ONE Tunnel では、 docker コマンドを用いずに [Tunnel CLI ツール] と専用構成ファイルでの定義を用いた展開を行います。
管理ホストにて実施する展開の事前準備を記載します。
- 管理ホストのユーザーホームディレクトリに Tunnel コンテナイメージを格納
- Tunnel コンテナイメージを Tunnel CLI ツールの既定のディレクトリに格納
$ sudo mv ~/24.10.482-2024.11.28-2127985.tar.gz /opt/omnissa/dux/images/
- Tunnel CLI ツールで使用する構成ファイルを編集
$ sudo vi /opt/omnissa/dux/ts_manifest.yml
- uem セクションにて、環境に応じて以下を設定[tunnel_config_id:]と[group_id:]はいずれかのみでも可能です。
uem: url: https://asXXX.awmdm.com ※Tunnel 連携先 UEM API サーバー URL tunnel_config_id: 550e8400-e29b-41d4-a716-446655440000 ※Tunnel 構成 UUID group_id: <Tunnnel 構成先グループ ID> admin: username: <管理者アカウント ID>
- tunnel_server セクションにて、環境に応じて以下を設定して保存
「:」と値の間に半角スペースが必要で有るため注意してください。tunnel_server: image_name: 24.10.482-2024.11.28-2127985.tar.gz ※ Tunnel コンテナイメージ ファイル名 ssh_login_credentials: ssh_user: dux ※Docker ホストへ接続する際のユーザーを指定 ssh_key_path: /home/<user>/.ssh/id_rsa ※ssh 鍵ペアの秘密鍵ファイルパスを指定 #ssh_port: ※Docker ホストの ssh ポートが 22 以外の場合はコメントアウトして番号を指定 hosts: - address: 192.0.2.1 ※Docker ホストアドレス # The deployment role for the server. # 0 - basic mode # 1 - cascade mode - frontend # 2 - cascade mode - backend server_role: 0 ※ベーシックモードとして Tunnel を構成する場合 # Add entries to the container hosts file to manually link FQDN to IP address # Format: ## - host_name: ## ip_address: host_entries: ※host定義を行う場合のみ指定
- 構成ファイルのチェックおよび展開の試験を実施
$ dux deploy -d
- 構成ファイルの検証が成功して、 Docker ホストの接続に確認が求められたら [yes] を入力して Enter キーを押下
Manifest file syntax validation is successful Verifying Tunnel Server image location given in manifest: 24.10.482-2024.11.28-2127985.tar.gz The authenticity of host '192.0.2.1:22' can't be established. Fingerprint of the host's key:SHA256:kHMbnxnn/RK8B8Ou4I4nHuDcOPRscpIndI0MqA3KXuk Do you want to continue connecting? (yes/no):
- 以下のように展開検証が成功することを確認T
Added host 192.0.2.1:22 to known_hosts Verifying deployment prerequisites on 192.0.2.1 Verifying docker is installed and running on 192.0.2.1 Checking open SSH connections to confirm SSH is configured securely SSH is securely enabled only on the internal IP. Checking for availablility of sufficient free disk space Host 192.0.2.1 is good to deploy Manifest file and hosts are good to deploy!
7. 管理ホスト: Docker ホストへの Tunnel ゲートウェイサービス展開
構成ファイルの検証後、当該定義にて展開を開始します。
- Tunnel コンテナの展開を開始
$ dux deploy
- 構成ファイルで指定した管理者アカウントのパスワードを入力して Enter キーを押下
Enter UEM password:
- Tunnel コンテナ用のパフォーマンスチューニングを行うため [y] を入力して Enter キーを押下
The perf_tune option has been enabled in the manifest. The perf_tune script will modify the Tunnel server host machines to provide recommended performance settings. Do you want to run the perf_tune script? (y/n):
- 以下のように Tunnel ゲートウェイサービスの展開が成功することを確認
Checking open SSH connections to confirm SSH is configured securely SSH is securely enabled only on the internal IP. Preparing for Tunnel server container deployment on 192.0.2.1 Tunnel server container image is already present on the host. Will not need to copy the image for deployment Deploying new Tunnel server container on 192.0.2.1 Tunnel server container ID: 18a7d00aecf21155d098703703f8264ce2964038a5574a33dd1a32bdad0490ac Fetching the deployment status. Please wait. This may take some time Node number(n): 1 Version: 24.10.el9.482 CPU: 0.50% Memory: 722.000 MB Devices: 0 Cascade: off Status: Running Deployment is up! Deploy command has completed on 192.0.2.1
Tunnel ゲートウェイサービスのステータス確認
展開した Tunnel ゲートウェイサービスのステータスは、管理ホストの Tunnel CLI ツールにて確認を行うことができます。
以下に、確認できる情報の一例を紹介します。
ステータス確認
- Tunnel CLI ツールにてステータスコマンドを実行
$ dux status
- 以下のようにバージョンや CPU/RAM 使用率や接続状況が出力される
Status of Tunnel Server containers deployed 1. Host: 192.0.2.1 Node number(n): 1 Version: 24.10.el9.482 CPU: 3.02% Memory: 786.000 MB Devices: 0 Cascade: off Status: Running
VPN レポート情報確認
- Tunnel CLI ツールにてレポートコマンドを実行
$ dux report
- 以下のように詳細なレポート情報が出力される
Vpnreport of Tunnel Server containers deployed 1. Host: 192.0.2.1 Tunnel Version: 24.10.el9.482 Console Version: 24.10.135.3 Operating System: AlmaLinux 9.2 (Turquoise Kodkod) MultiTunnel Config: Tunnel Container MultiTunnel Cfg UID: 550e8400-e29b-41d4-a716-446655440000 # of Devices: 0 Peak: 0 A:0 iOS:0 Mac:0 Win:0 Lnx:0 ChmeOS:0 Othrs:0 SDK:0 # of Connections: 0 Peak: 0 # of Traffic Rules: 1 Enabled: Yes # of Proxies: 1 Up: 0 Down: 1 API Connectivity: Up Last Resp: 200 OK AWCM Connectivity: Up Last Resp: 200 OK API via Traf Rules: No Cascade Mode: Off Reverse Connect: No KCD Proxy Support: No Config Locked: No TLS Port Sharing: No Deployment Mode: Prod FIPS Mode: No NSX Mode: No ZTNA DTR: No # of ZTNA DTR: 0 Appliance Mode: No Container Mode: Yes MFA: Off JWT: No Service Status: Up Log Lvl: Error SOCKS Downstream: 0.000 Kbps SOCKS Upstream: 0.000 Kbps NAT Downstream: 0.000 Kbps NAT Upstream: 0.000 Kbps Total Downstream: 0.000 Kbps Total Upstream: 0.000 Kbps CPU 1: 3.96%% CPU 2: 6.00%% Average CPU: 3.55 %% Memory Virtual: 786.000 MB Memory Resident: 71.391 MB Memory Share: 15.625 MB Certificate Expiry Info Server cert: Feb 07,2027 API cert: Feb 07,2045 Client cert: Feb 07,2045 API Last Sync: 2025-04-20 06:12:16 AWCM Last Sync: 2025-04-20 06:19:39 Up Time: 0d 2h 7m 54s # of Allowlisted Devices: 0 # of Devices Since Start: 0 Using DTLS: 0 # of Device Failures Closed Handshake: 0 Failed Handshake: 0 Rejected due to DDoS Protection: 0 Blocked due to ZTNA Policy: 0 Blocked by Admin: 0 Unable to Connect to BackEnd: 0 Device Not in Allowlist: 0 Device Non-Compliant: 0 Device Non-Managed: 0 # MFA Succeeded: 0 Failures: 0 JWT Failures: 0 Outbound Traffic Since Start # of Successful Connections: 0 # of Failed Connections: 0 # of Blocked by ZTNA: 0 # Using Proxy: 0 # Not Using Proxy: 0 # of Flows by Device Type iOS: 0 Android: 0 Windows: 0 MacOS: 0 Linux: 0 ChromeOS: 0 Others: 0 # of Flows from SDK Bundled App: 0 # of Flows by Protocol TCP: 0 UDP: 0 Connected UDP: 0 Connectionless UDP: 0 Per Device UDP Limit: 1321 Popular Apps TCP UDP PKT 1. 0 0 0 2. 0 0 0 3. 0 0 0 4. 0 0 0 5. 0 0 0 6. 0 0 0 7. 0 0 0 8. 0 0 0 Devices with Most Traffic TCP UDP PKT 1. 0 0 0 2. 0 0 0 3. 0 0 0 4. 0 0 0 5. 0 0 0 6. 0 0 0 7. 0 0 0 8. 0 0 0 Top Destinations TCP UDP PKT 1. 0 0 0 2. 0 0 0 3. 0 0 0 4. 0 0 0 5. 0 0 0 6. 0 0 0 7. 0 0 0 8. 0 0 0
Tunnel ゲートウェイサービスの停止と削除
Tunnel ゲートウェイサービスは、管理ホストの Tunnel CLI ツールにてサービスの停止や起動、削除を行うことができます。
Tunnel ゲートウェイサービスの停止
- Tunnel CLI ツールにて停止コマンドを実行
$ dux stop
- 停止対象のサービス情報を確認して [y] を入力して Enter キーを押下
Are you sure you want to stop the Tunnel Server containers deployed in all the hosts given in the manifest? ip : 192.0.2.1 node-number : 1 Please confirm (y/n):
- サービスが停止して以下のメッセージが出力される
Tunnel server container was successfully stopped on 192.0.2.1
Tunnel ゲートウェイサービスの再起動
Tunnel サービスを再起動する、停止したサービスを起動する場合、いずれも restart コマンドを使用します。
起動状態を問わず、出力内容は同じでした。
- Tunnel CLI ツールにて再起動コマンドを実行
$ dux restart
- 再起動対象のサービス情報を確認して [y] を入力して Enter キーを押下
Are you sure you want to restart the Tunnel Server containers deployed in all the hosts given in the manifest? ip : 192.0.2.1 node-number : 1 Please confirm (y/n):
- サービスが再起動して以下のメッセージが出力される
vpnserver Container was successfully restarted on 192.0.2.1
Tunnel ゲートウェイサービスの削除
- Tunnel CLI ツールにて削除コマンドを実行
$ dux destroy
- 削除対象のサービス情報を確認して [y] を入力して Enter キーを押下
Are you sure you want to destroy the Tunnel Server containers deployed in all the hosts given in the manifest? ip : 192.0.2.1 node-number : 1 Please confirm (y/n):
- Tunnel コンテナが Docker 上から削除されて以下のメッセージが出力される
Tunnel server container was successfully destroyed on 192.0.2.1
Omnissa Workspace ONE UEM コンソールでの表示
Unified Access Gateway での構成時と同様、 Tunnel 構成の [接続のテスト] にて接続されている Tunnel ゲートウェイの情報が確認できます。
ただし、明確に Unified Access Gateway とコンテナ版 Tunnel ゲートウェイサービスとしての表示はされません。
ただし、バージョンは表記されるため、今後のリリースで同一バージョンとなる可能性もありますが、区別を行うことは可能です。
なお、今回の検証時点では、以下のようにバージョン情報の関連性を確認できました。
- Workspace ONE UEM コンソールでの表記
- 24.10.el9.482
- コンテナイメージのファイル名
- 24.10.482-2024.11.28-2127985.tar.gz
おわりに
今回は コンテナ版 Workspace ONE Tunnel を Docker 上に展開する流れを紹介しました。
Unified Access Gateway は仮想アプライアンスであるため、展開がサポートされていない環境では利用することが難しい場合があるため、そのような環境では簡単に展開することができます。
一方、パスワード無しで全コマンドに sudo を実行する要件はセキュリティ上の考慮事項が大きいと感じます。
Docker に慣れていない管理者向けに Tunnel CLI ツールでの展開が提供されていますが、 Docker に慣れている管理者にとっては逆に手間を感じるケースもあると思います。
また、現時点では Unified Access Gateway 向けには提供されているリソース要件が提供されていない点も注意が必要です。
この3つにより、他の Docker コンテナとの同時起動は難しい場合もあると思います。
そのため、通常の Docker コンテナとしての展開もサポートされると望ましいと感じました。
また、個人的な感想として Unified Access Gateway が利用可能な環境では、そちらを使う方が管理や操作が扱いやすいため、それぞれの特性を踏まえた導入が望ましいと考えています。
コメント
コメントを投稿