コンテンツにスキップ

「Tailscale」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
記事を更新
 
(同じ利用者による、間の1版が非表示)
8行目: 8行目:
== インストール ==
== インストール ==


{{Pkg|tailscale}} を[[インストール]]します。{{AUR|tailscale-git}} または {{AUR|tailscale-unstable-bin}} パッケージインストールして、不安定なビルドを使用することもできます
{{Pkg|tailscale}} を[[インストール]]し、システム再起動してください

tailscale を [[Docker]] コンテナとして実行することもできます。この方法では、1 台のマシン上で複数の exit node を実行でき、それぞれを独自の tailnet に所属させることができます。

=== システムトレイアプリケーション ===

{{Note|この機能は現在 beta です。}}

v1.88 で導入され、tailscale には systray アプリケーションが同梱されています。systray を起動するには、以下を実行してください:

$ tailscale systray

起動時に systray を実行するには、systemd ユーザーサービスとして以下を実行するか:

$ tailscale configure systray --enable-startup=systemd

または freedesktop autostart ファイルを使用します:

$ tailscale configure systray --enable-startup=freedesktop

詳細は [https://tailscale.com/docs/features/client/linux-systray tailscale の公式ドキュメント] を参照してください。

=== サードパーティクライアント ===

* {{App|KTailctl|Tailscale を監視および管理する GUI。|https://github.com/f-koehler/KTailctl|{{AUR|ktailctl}}}}
* {{App|trayscale|Tailscale CLI クライアント用の非公式 GUI ラッパー。|https://github.com/DeedleFake/trayscale|{{AUR|trayscale}}}}
* {{App|tailscaledesktop|非公式の Tailscale デスクトップアプリケーション。|https://gitlab.com/tailscaledesktop/application|{{AUR|tailscaledesktop}}}}
* {{App|tailscale-systray-git|tailscale system tray menu の Linux 移植版。|https://github.com/mattn/tailscale-systray|{{AUR|tailscale-systray-git}}}}


== 使用方法 ==
== 使用方法 ==


''tailscale'' を使用するには、{{ic|tailscaled.service}} を[[起動/有効化]]しのようにサーバーを実行します
''tailscale'' を使用するには、{{ic|tailscaled.service}} を[[有効化/起動]]し、以下のようにサーバーを実行します:


# tailscale up
# tailscale up


[https://tailscale.com/kb/1085/auth-keys/ auth key]
[https://tailscale.com/kb/1085/auth-keys/ auth key] を指定して、headless マシンを認証できます:
を指定することで、ヘッドレス マシンを認証できます。


# tailscale up --authkey=tskey-''KEY''
# tailscale up --authkey=tskey-''KEY''


{{ Note | デフォルトでは、tailscale は [https://tailscale.com/kb/1011/log-mesh-traffic#centralized-log-management ログをサーバーに送信し、中央ストレージに保存します]。以下のいずれかの手順で opt out できます:
=== カスタム コントロール サーバーの使用 ===
* {{ic|/etc/default/tailscaled}} を編集して {{ic|TS_NO_LOGS_NO_SUPPORT{{=}}true}} を含める
* {{ic|/etc/default/tailscaled}} を編集し、{{ic|FLAGS}} に {{ic|--no-logs-no-support}} を追加する


中央ログを opt out すると、Tailscale から技術サポートを受けられない場合があります。}}
[https://github.com/juanfont/headscale headscale] のようなカスタム コントロール サーバーを使用することが可能です。

ログインするには、
== 高度な使用方法 ==

=== カスタム Control Server を使用する ===

[https://github.com/juanfont/headscale headscale] のようなカスタム control server を使用できます。

ログインするには、以下を実行します:


# tailscale up --login-server https://example.com
# tailscale up --login-server https://example.com


ヘッドレス システムでは、トークンを使用した非対話ログインが可能です。
headless システムでは、token を使用した非対話ログインが可能です。


# tailscale up --login-server https://example.com --authkey ''your_auth_key''
# tailscale up --login-server https://example.com --authkey ''your_auth_key''

{{ic|headscale.service}} を[[起動]]した後、以下のコマンドで user と auth-key を作成できます:

# headscale users create USER -e email@example.com
# headscale users list
# headscale preauthkeys create -u <ID> --reusable

==== ユーザー間で node を共有する ====
policy を含むファイルを作成します:
{
"tagOwners": {
"tag:shared": ["user1@"]
},
"groups": {
"group:all": ["user1@", "user2@", "user3@"]
},
"acls": [
{
"action": "accept",
"src": ["group:all"],
"dst": ["tag:shared:*"]
}
]
}

config.yaml でこのファイルを指定します:
policy:
mode: file
path: "/etc/headscale/policy.json"

tag を advertise します:
tailscale up --advertise-tags=tag:shared --login-server=https://headscale.localdomain/
==== nextcloud または別の OIDC provider との統合 ====

{{AUR|nextcloud-app-oidc}} をインストールして client key を作成し、redirection uri として https://headscale.localdomain/oidc/callback を使用します。

以下の snippet を config.yaml に追加します:
oidc:
issuer: "https://cloud.example.com"
client_id: "<client-id>"
client_secret: "<client-secret>"
scope: ["openid", "profile", "email"]
user_map:
name: "preferred_username"
email: "email"

=== Docker コンテナとして実行する ===

tailscale を Docker コンテナとして実行する一般的な方法については、[https://hub.docker.com/r/tailscale/tailscale このガイド] に従ってください。

==== exit node として ====

Docker コンテナとして実行している tailscale インスタンスを exit node として使用できるようにするには、コンテナのネットワークで小さい MTU を使用する必要があります。これは [https://github.com/tailscale/tailscale/issues/3877 MTU 関連の問題] が原因です。

まだ作成していない場合は、カスタムネットワークを作成します:

# docker network create --opt com.docket.network.driver.mtu=1280 ''my_custom_network''

次に、そのネットワークをコンテナインスタンスで使用します:

# docker run --detach --name=''my_tailscale_container'' --network=''my_custom_network'' --volume /var/lib/tailscale-exitnode-1:/var/lib/tailscale --env TS_STATE_DIR=/var/lib/tailscale --env TS_USERSPACE=1 --env TS_AUTHKEY=''tskey-auth-XXX'' --env TS_EXTRA_ARGS='--advertise-exit-node' tailscale/tailscale

注意点:
* デフォルトでは、docker は {{ic|bridge}} 型のネットワークを作成するため、ここで指定する必要はありません。
* node の認証には auth key を使用してください。通常の SSO 方式で認証すると時間がかかりすぎ、初回認証が成功する前に process が timeout する場合があります。
* {{ic|TS_USERSPACE{{=}}1}} を定義すると、コンテナに昇格権限 ({{ic|CAP_NET_ADMIN}} および {{ic|CAP_NET_RAW}}) が不要になります。
* ホスト上の未使用ディレクトリ ({{ic|/var/lib/tailscale-exitnode-1}}) をコンテナ内の {{ic|/var/lib/tailscale}} に bind mount し、さらに {{ic|TS_STATE_DIR{{=}}/var/lib/tailscale}} を定義してください。これにより、tailscale は永続的な state file を使用します。これらがない場合、exit node は状態を保持するために volatile memory を使用するため、コンテナを再起動するたびに新しい ID と tailnet IP アドレスを取得します [https://github.com/tailscale/tailscale/issues/7119]。

== ヒントとテクニック ==

=== NetworkManager と併用する ===

[[NetworkManager]] を使用している場合、tailnet 内の他のデバイスとの接続に問題が発生する場合があります。これは NetworkManager と tailscaled の間で発生する管理競合が原因です。

これを解消するには、NetworkManager が tailscale ネットワークデバイス (例: {{ic|tailscale0}}) を管理しないようにする必要があります。

そのためには、{{ic|/etc/NetworkManager/conf.d/99-tailscale.conf}} のような config を作成し、以下の内容を記述します:

[keyfile]
unmanaged-devices=interface-name:tailscale0

その後、{{ic|NetworkManager.service}} と {{ic|tailscaled.service}} を[[再起動]]してください。

tailscale を一度切り替える必要がある場合もあります:

# tailscale down
# tailscale up

これで、tailnet 上の他のデバイスに {{ic|ping}} できるようになるはずです。

=== Magic DNS ===

Tailscale は、tailnet 設定から DNS server と search suffixes を設定するために、正常に動作する [[systemd-resolved]] を備えたシステムを想定しています。そうでない場合、{{ic|/etc/resolv.conf}} を[https://tailscale.com/blog/sisyphean-dns-client-linux 上書きしようとします]。

=== セキュリティ強化 ===

Tailscale は専用のユーザーで、動作に必要な capabilities のみを持って実行するようにできます。詳細は [https://tailscale.com/kb/1279/security-node-hardening#suggested-hardening-configuration-based-on-systemd 公式 knowledge base article] を参照してください。

== トラブルシューティング ==

=== 起動時に Tailscale がクラッシュする ===

{{ic|tailscaled.service}} を起動した後、クラッシュして restart loop に陥る場合があります。これは ''tun'' kernel module が存在しないことが原因である可能性があります。実際にこれが原因か確認するには、''systemd'' 経由で {{ic|tailscaled.service}} のログを確認します:

# systemctl status tailscaled.service

または、terminal で root として binary を実行します:

# /usr/sbin/tailscaled

以下のような、または類似したエラーが ''systemctl status'' または binary の実行時に表示される場合があります:

...is CONFIG_TUN enabled in your kernel? modprobe tun failed with: modprobe: FATAL: Module tun not found in directory /lib/modules/5.17.4-arch1-1 kernel/drivers/net/tun.ko found on disk, but not for current kernel; are you in middle of a system update and haven't rebooted? found: /lib/modules/5.17.8-arch1-1/kernel/drivers/net/tun.ko.zst wgengine.NewUserspaceEngine(tun "tailscale0") error: tstun.New("tailscale0"): no such device

その場合は、単にシステムを再起動し、{{ic|tailscaled.service}} が ''systemctl status'' で loaded ではなく active になっているか確認してください。


== 参照 ==
== 参照 ==

2026年5月28日 (木) 19:04時点における最新版

関連記事

Tailscale は WireGuard の上に構築され、ピアがメッシュ ネットワークを構築するための OAuth2 (SSO)、OpenID、および SAML 認証を提供します。クロスプラットフォームであり、ACL 設定と内部 DNS があります。

インストール

tailscaleインストールし、システムを再起動してください。

tailscale を Docker コンテナとして実行することもできます。この方法では、1 台のマシン上で複数の exit node を実行でき、それぞれを独自の tailnet に所属させることができます。

システムトレイアプリケーション

ノート この機能は現在 beta です。

v1.88 で導入され、tailscale には systray アプリケーションが同梱されています。systray を起動するには、以下を実行してください:

$ tailscale systray

起動時に systray を実行するには、systemd ユーザーサービスとして以下を実行するか:

$ tailscale configure systray --enable-startup=systemd

または freedesktop autostart ファイルを使用します:

$ tailscale configure systray --enable-startup=freedesktop

詳細は tailscale の公式ドキュメント を参照してください。

サードパーティクライアント

  • KTailctl — Tailscale を監視および管理する GUI。
https://github.com/f-koehler/KTailctl || ktailctlAUR
  • trayscale — Tailscale CLI クライアント用の非公式 GUI ラッパー。
https://github.com/DeedleFake/trayscale || trayscaleAUR
  • tailscaledesktop — 非公式の Tailscale デスクトップアプリケーション。
https://gitlab.com/tailscaledesktop/application || tailscaledesktopAUR
  • tailscale-systray-git — tailscale system tray menu の Linux 移植版。
https://github.com/mattn/tailscale-systray || tailscale-systray-gitAUR

使用方法

tailscale を使用するには、tailscaled.service有効化/起動し、以下のようにサーバーを実行します:

# tailscale up

auth key を指定して、headless マシンを認証できます:

# tailscale up --authkey=tskey-KEY
ノート デフォルトでは、tailscale は ログをサーバーに送信し、中央ストレージに保存します。以下のいずれかの手順で opt out できます:
  • /etc/default/tailscaled を編集して TS_NO_LOGS_NO_SUPPORT=true を含める
  • /etc/default/tailscaled を編集し、FLAGS--no-logs-no-support を追加する
中央ログを opt out すると、Tailscale から技術サポートを受けられない場合があります。

高度な使用方法

カスタム Control Server を使用する

headscale のようなカスタム control server を使用できます。

ログインするには、以下を実行します:

# tailscale up --login-server https://example.com

headless システムでは、token を使用した非対話ログインが可能です。

# tailscale up --login-server https://example.com --authkey your_auth_key

headscale.service起動した後、以下のコマンドで user と auth-key を作成できます:

# headscale users create USER -e email@example.com
# headscale users list
# headscale preauthkeys create -u <ID> --reusable

ユーザー間で node を共有する

policy を含むファイルを作成します:

{
 "tagOwners": {
   "tag:shared": ["user1@"]
 },
 "groups": {
   "group:all": ["user1@", "user2@", "user3@"]
 },
 "acls": [
   {
     "action": "accept",
     "src": ["group:all"],
     "dst": ["tag:shared:*"]
   }
 ]
}

config.yaml でこのファイルを指定します:

policy:
 mode: file
 path: "/etc/headscale/policy.json"

tag を advertise します:

 tailscale up --advertise-tags=tag:shared --login-server=https://headscale.localdomain/
 

nextcloud または別の OIDC provider との統合

nextcloud-app-oidcAUR をインストールして client key を作成し、redirection uri として https://headscale.localdomain/oidc/callback を使用します。

以下の snippet を config.yaml に追加します:

oidc:
 issuer: "https://cloud.example.com"
 client_id: "<client-id>"
 client_secret: "<client-secret>"
 scope: ["openid", "profile", "email"]
 user_map:
   name: "preferred_username"
   email: "email"

Docker コンテナとして実行する

tailscale を Docker コンテナとして実行する一般的な方法については、このガイド に従ってください。

exit node として

Docker コンテナとして実行している tailscale インスタンスを exit node として使用できるようにするには、コンテナのネットワークで小さい MTU を使用する必要があります。これは MTU 関連の問題 が原因です。

まだ作成していない場合は、カスタムネットワークを作成します:

# docker network create --opt com.docket.network.driver.mtu=1280 my_custom_network

次に、そのネットワークをコンテナインスタンスで使用します:

# docker run --detach --name=my_tailscale_container --network=my_custom_network --volume /var/lib/tailscale-exitnode-1:/var/lib/tailscale --env TS_STATE_DIR=/var/lib/tailscale --env TS_USERSPACE=1 --env TS_AUTHKEY=tskey-auth-XXX --env TS_EXTRA_ARGS='--advertise-exit-node' tailscale/tailscale

注意点:

  • デフォルトでは、docker は bridge 型のネットワークを作成するため、ここで指定する必要はありません。
  • node の認証には auth key を使用してください。通常の SSO 方式で認証すると時間がかかりすぎ、初回認証が成功する前に process が timeout する場合があります。
  • TS_USERSPACE=1 を定義すると、コンテナに昇格権限 (CAP_NET_ADMIN および CAP_NET_RAW) が不要になります。
  • ホスト上の未使用ディレクトリ (/var/lib/tailscale-exitnode-1) をコンテナ内の /var/lib/tailscale に bind mount し、さらに TS_STATE_DIR=/var/lib/tailscale を定義してください。これにより、tailscale は永続的な state file を使用します。これらがない場合、exit node は状態を保持するために volatile memory を使用するため、コンテナを再起動するたびに新しい ID と tailnet IP アドレスを取得します [1]

ヒントとテクニック

NetworkManager と併用する

NetworkManager を使用している場合、tailnet 内の他のデバイスとの接続に問題が発生する場合があります。これは NetworkManager と tailscaled の間で発生する管理競合が原因です。

これを解消するには、NetworkManager が tailscale ネットワークデバイス (例: tailscale0) を管理しないようにする必要があります。

そのためには、/etc/NetworkManager/conf.d/99-tailscale.conf のような config を作成し、以下の内容を記述します:

[keyfile]
unmanaged-devices=interface-name:tailscale0

その後、NetworkManager.servicetailscaled.service再起動してください。

tailscale を一度切り替える必要がある場合もあります:

# tailscale down
# tailscale up

これで、tailnet 上の他のデバイスに ping できるようになるはずです。

Magic DNS

Tailscale は、tailnet 設定から DNS server と search suffixes を設定するために、正常に動作する systemd-resolved を備えたシステムを想定しています。そうでない場合、/etc/resolv.conf上書きしようとします

セキュリティ強化

Tailscale は専用のユーザーで、動作に必要な capabilities のみを持って実行するようにできます。詳細は 公式 knowledge base article を参照してください。

トラブルシューティング

起動時に Tailscale がクラッシュする

tailscaled.service を起動した後、クラッシュして restart loop に陥る場合があります。これは tun kernel module が存在しないことが原因である可能性があります。実際にこれが原因か確認するには、systemd 経由で tailscaled.service のログを確認します:

# systemctl status tailscaled.service

または、terminal で root として binary を実行します:

# /usr/sbin/tailscaled

以下のような、または類似したエラーが systemctl status または binary の実行時に表示される場合があります:

...is CONFIG_TUN enabled in your kernel? modprobe tun failed with: modprobe: FATAL: Module tun not found in directory /lib/modules/5.17.4-arch1-1 kernel/drivers/net/tun.ko found on disk, but not for current kernel; are you in middle of a system update and haven't rebooted? found: /lib/modules/5.17.8-arch1-1/kernel/drivers/net/tun.ko.zst wgengine.NewUserspaceEngine(tun "tailscale0") error: tstun.New("tailscale0"): no such device

その場合は、単にシステムを再起動し、tailscaled.servicesystemctl status で loaded ではなく active になっているか確認してください。

参照