「Tailscale」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) |
Kusanaginoturugi (トーク | 投稿記録) 記事を更新 |
||
| (同じ利用者による、間の1版が非表示) | |||
| 8行目: | 8行目: | ||
== インストール == |
== インストール == |
||
{{Pkg|tailscale}} を[[インストール]]し |
{{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 に所属させることができます。
システムトレイアプリケーション
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。
- trayscale — Tailscale CLI クライアント用の非公式 GUI ラッパー。
- tailscaledesktop — 非公式の Tailscale デスクトップアプリケーション。
- tailscale-systray-git — tailscale system tray menu の Linux 移植版。
使用方法
tailscale を使用するには、tailscaled.service を有効化/起動し、以下のようにサーバーを実行します:
# tailscale up
auth key を指定して、headless マシンを認証できます:
# tailscale up --authkey=tskey-KEY
/etc/default/tailscaledを編集してTS_NO_LOGS_NO_SUPPORT=trueを含める/etc/default/tailscaledを編集し、FLAGSに--no-logs-no-supportを追加する
高度な使用方法
カスタム 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.service と tailscaled.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.service が systemctl status で loaded ではなく active になっているか確認してください。