Axelspace
🪟

Tailscale導入・運用時のテクニック

に公開

はじめに

人工衛星に関わるビジネスを展開しているベンチャー企業、アクセルスペースホールディングスでコーポレートIT、セキュリティエンジニアとして働いております、mizuです。
以前ZTNAプロダクトの導入に関して以下の記事をポストしました。今回の記事ではTailscale導入に役立つノウハウ・テクニックを取りまとめました。

Tailscaleとは

公式サイトを確認ください。
https://tailscale.com/

弊社におけるTailscaleの利用シーンについては以下を参照ください。
https://zenn.dev/axelspace/articles/8d0d8ef1af9710

想定読者

  • ゼロトラスト化、脱VPNの推進を進めようとしているNW、セキュリティ、情報システム担当者
  • ある程度Tailscaleというプロダクトを把握しており、スムーズな導入方法に興味があるエンジニア

想定シナリオ

Intuneを用いて組織内のWindowsマシンにTailscaleを効率的にデプロイする

Windowsマシンへの自動インストール

Windowsマシンへインストールする際、exe形式もしくはmsi形式、そのどちらかのインストーラを実行することとなります。
どちらの形式でも正常にインストールは可能なので、Tailscaleユーザ自身がインストールを行う場合は特段気にする必要はありませんが、msi形式は多様なオプション(MSIプロパティ)付与をサポートしているため、今回の記事ではmsi形式のインストーラを配布するシナリオを進めます。

以下、msi形式のインストーラ実行に関する公式ドキュメントを基に説明を続けます。
https://tailscale.com/kb/1189/install-windows-msi

インストールコマンド

この説明ではIntuneの設定方法やパラメータの詳細は割愛させて頂き、弊社のTailscale配布設定で使用しているオプションの内容と意図を簡単に説明させて頂きます。
弊社では実際に、以下のようなインストールコマンドを使用してTailscaleの配布を行っています。

オプションの設定値と説明は以下です。

Properties Value UseCase Comment
TS_NOLAUNCH nolaunch 配布直後に起動 配布直後に起動させる必要がないため
TS_INSTALLUPDATES 省略 自動更新を有効化 後述するプロファイルにて自動更新を設定するため指定不要。参考情報としてここに記載。

検出規則

Intuneがインストールコマンドを実行する条件として、比較的利用しやすい「ファイル」を弊社では用いています。「ファイル」は特定ファイル(フォルダ)が存在しない場合、Intuneに設定されたコマンドを実行する というものです。

今回はTailscaleの新規インストールを行うため、Tailscaleの実行ファイル(C:\Program Files\Tailscale\tailscale-ipn.exe)の有無を検出規則として指定しています。

上述のようなIntune設定によって、Windowsマシンに対してmsi形式のインストーラ配布、コマンドの実行が出来ると思われます。インストール実行がうまく行かない場合、/Lのプロパティを付与してログを確認したりしてみてください。

Tailscale用構成プロファイル編集と配布

各WindowsマシンにインストールされたTailscaleですが、管理者側で構成プロファイルをコントロールしたいケースが発生します。ただ、各マシンにプロファイルの手動設定を行う事は効率的ではありません。
そうしたオペレーションをIntune上で効率的に実現するために、TailscaleはADMXファイルを用いた構成プロファイルの管理を一元化する仕組みが存在します。

ADMXファイルを用いた設定方法は以下の公式サイトを参照頂くとして、弊社で実施している構成プロファイルの設定内容について説明します。
https://tailscale.com/kb/1327/mdm-microsoft-intune#create-upload-and-deploy-a-tailscale-configuration-profile-for-windows

Automatically install updates の(強制)有効化

Tailscaleの自動更新を行うかどうかについては、各マシンのPrefarancesより「Automatically install updates」にチェックを入れる必要があります。このプロセスを自動的、強制的に有効化するために弊社では以下のプロファイルについて「有効」としている状態となります。

実際の構成プロファイル設定画面は以下のような状態となります。

その他にもプロファイルの設定項目は存在しますが、現時点で意図的に有効化している項目は自動更新に関する設定のみとなります。

設定名 Value UseCase Comment
Automatically install updates 有効 自動更新を有効 自動更新設定を強制的に有効化させるため

今回の構成プロファイル配布により、各マシンのTailscale > Prefarancesに「Automatically install updates」の表示すら消えてなくなり、以降は常に/自動的に最新版のTailscaleに更新し続けることになります。

スタートアップ(自動起動)の停止

Tailscaleのインストール後、各WindowsマシンのTailscaleはOS起動後に自動起動するような動作を取るようです(2025年現時点の状況)。弊社では以下の理由があって明示的にTailscaleの自動起動をさせないような処理を実施しました。

  • Tailscaleの課金形態は「アクティブユーザ数」であることからコストを抑えるため。
  • 不要なTailscaleの動作が、通信や処理のパフォーマンスの劣化を引き起こす可能性があるため。

Tailscaleスタートアップの仕組み

仕組み自体は単純なもので、Tailscaleインストール後の処理として以下のファイルがWindowsのスタートアップフォルダに作成されることによるものとなります。なお、linkファイルのリンク先は「tailscale-ipn.exe」となります。
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\tailscale.lnk

Tailscaleを自動起動させない処理を行う方法には以下の2通りがあります。

  • 上記のファイル、tailscale.lnk を削除する。
  • アプリ > スタートアップ より、Tailscaleの選択してDisableとする(GUI作業)。

今回はIntuneにて横断的にTailscaleのスタートアップを停止させるため、前者(削除する方法)にて対処を進めます。

tailscale.lnkの削除

Intuneより横断的にtailscale.lnkを削除する場合、単純に当ファイルを削除するpowershellスクリプトを実行するだけで事足ります。当スクリプトについては説明を割愛します。
ただし、検出規則(「ファイル」の場合)の基本的な動作は「特定ファイル(フォルダ)が存在しない場合」となるため、「特定のファイルが存在する場合」を条件に削除スクリプトを実行させるような制御が、Intuneの検出規則だとどうしても簡単には実装できませんでした。

そのため、検出規則には「カスタム検出スクリプト」を用いて以下のPowershellを実行させることとして解決させました。このスクリプトにより「特定のファイルが存在する場合」にファイルを削除するスクリプトを動作させる条件判定を実現させています。

# Tailscaleスタートアップショートカットの存在をチェックする検出スクリプト

$Path = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\tailscale.lnk"

if (Test-Path -Path $Path -PathType Leaf) {
    # ショートカットが存在する (削除が必要 = 目的外の状態)
    # Intuneに「未検出 (実行せよ)」と伝えるため、終了コード 1 を返す
    Write-Output "Tailscaleショートカットは存在します。未検出 (Exit Code 1)"
    exit 1
} else {
    # ショートカットが存在しない (削除済み = 目的の状態)
    # Intuneに「検出済み (実行不要)」と伝えるため、終了コード 0 を返す
    Write-Output "Tailscaleショートカットは存在しません。検出済み (Exit Code 0)"
    exit 0
}

こうしてTailscaleを自動的に起動しないような仕組みをIntuneより配布させることが出来ました。

まとめ

TailscaleはeZTNA製品として多岐にわたるシーンにおいて活用できるプロダクトだと感じていますが、多機能であるが故にノウハウの学習にはある程度のコストが発生すると感じています。
今後もTailscaleに追加されていく機能にキャッチアップし、その機能の活用シーンを最大化していくことが、このプロダクトを運用する際の重要な要素であると考えます。

今回説明したテクニックがTailscaleを導入・運用する(もしくはこれからする)エンジニアの一助になれば幸いです。

Axelspace
Axelspace

Discussion