Tailscaleロゴ

ネットワークフローログ

最終検証日:
翻訳: 竹洞 陽一郎

ネットワークフローログを使用すると、Tailscaleネットワーク(tailnetと呼ばれる)上のノード同士がいつ、どのように接続しているかを把握できます。
ネットワークログをエクスポートして、長期保存、セキュリティ分析、脅威検出、インシデント調査に活用できます。
また、セキュリティ情報・イベント管理(SIEM)システムにログをストリーミングすることも可能です。

ネットワークログに記録されるのは、ネットワークトラフィックのフロー(通信の流れ)であり、ネットワークトラフィックの内容ではありません。
Tailscaleはトラフィックの内容を検査することはなく、また検査できません。
データのプライバシーがどのように保護されているかについては、セキュリティページをご参照ください。

ネットワークフローログは、直近30日間のデータが利用可能です。

この機能はPremiumプランおよびEnterpriseプランでご利用いただけます。
ネットワークフローログの送信には、Tailscale v1.34以降を使用しているノードが必要です。

仕組み

ネットワークフローログが有効化されている場合(--no-logs-no-supportを使用していない場合)、ノードは接続の両端のフロー情報をTailscaleログサービスに報告します。
接続は以下のいずれかの間で発生します。

ノード間の接続
2つのノード同士の直接通信。
ノードとSubnet Router配下のデバイス間の接続
この場合、Subnet Routerが接続のログを記録します。
ノードとExit Node経由でアクセスするパブリックデバイス間の接続
この場合、Exit Nodeが接続のログを記録します。

ログは、送信された(transferred)ネットワーク接続と受信された(received)ネットワーク接続の間で記録され、両端のエントリが存在します。

ログは2つのレイヤで記録されます。仮想レイヤ物理レイヤです。
仮想レイヤとは、Tailscaleが各デバイスに提供するTailscaleネットワーク(通常100.x.x.xのIPアドレス)です。
物理レイヤは、デバイス上のすべての物理ネットワークインターフェースを含みます。
あるノードが別のノードにパケットを送信する場合、パケットは物理レイヤを通過する必要があります。
仮想レイヤでルーティングされたすべてのトラフィックの合計は、一般的に物理レイヤでルーティングされたトラフィックと等しくなります。

Tailscaleはネットワークログを集中的に保存し、エクスポートを可能にします。
Tailscaleはネットワークトラフィックの実際の内容やデータをログに記録しません。

ネットワークログの構造

ネットワークログには、ネットワークフロー活動に関する詳細情報を提供するメッセージの配列が含まれます。
各メッセージは以下のコンポーネントで構成されます。

nodeId
このログメッセージを生成したノード。
ノードのグローバルに一意な識別子です。
ノード名とは異なる値です。
nodeIdをノード名にマッピングしたい場合は、/api/v2/device/:nodeIdメソッドを使用し、nameフィールドを確認できます。
logged
Tailscaleログサービスがメッセージを記録した時刻(UTC)。
一般的に、logged時刻はメッセージ内のend時刻より後になります。
start
メッセージ内のネットワークトラフィックフローデータの開始時刻(UTC)。
メッセージを生成したノードによって記録されます。
end
メッセージ内のネットワークトラフィックフローデータの終了時刻(UTC)。
メッセージを生成したノードによって記録されます。
srcNode
送信元ノード自体の情報。
このログメッセージを生成したノードです。
詳細はNode型のセクションをご参照ください。
dstNodes
送信元ノード(このノード)が通信したすべての宛先ノードの情報リスト。詳細はNode型のセクションをご参照ください。
virtualTraffic
ネットワークフローの仮想トラフィックのカウンタ。仮想トラフィックとは、tailnet内のノード間で発生するトラフィックです。
subnetTraffic
ネットワークフローのうち、アドバタイズされたSubnet Router経由でルーティングされるトラフィックのカウンタ。
exitTraffic
ネットワークフローのうち、Exit Node経由でルーティングされるトラフィックのカウンタ。
ノードからExit Node経由でパブリックデバイスへのトラフィックの場合、送信元はTailscale IPアドレスですが、プロトコル、送信元ポート、宛先は空になります。
Exit Node経由でパブリックデバイスからノードへの応答トラフィックの場合、宛先はTailscale IPアドレスですが、プロトコル、宛先ポート、送信元は空になります。
プライバシーを保護するため、Tailscaleは個々の接続に関する詳細情報を収集しません。
管理者がDestination Loggingを有効にした場合、プロトコル、送信元ポート、宛先情報がログに記録されます。
physicalTraffic
仮想Tailscaleネットワークの下で動作する物理ネットワークレイヤ上のトラフィックのカウンタ。
物理レイヤのトラフィック情報は仮想レイヤとはわずかに異なるタイミングで収集されるため、仮想レイヤを流れるパケットが物理レイヤのパケットと完全に一致しない場合があります。

開始時刻と終了時刻は、メッセージを生成したノード固有のものです。
異なるノード間ではクロックスキューが発生する可能性があります。

【訳注】クロックスキュー(clock skew)とは、複数のデバイス間でシステムクロック(内部時計)にずれが生じる現象です。
各ノードのクロックは独立して動作しているため、NTP等で同期していてもミリ秒〜数秒程度のずれが生じ得ます。
ネットワークフローログでは、startendのタイムスタンプは各ノードのローカル時計で記録されるため、異なるノード間のログを突き合わせて分析する際にこのずれを考慮する必要があります。
一方、loggedフィールドはTailscaleのログサービス側(単一のサーバ)で記録されるため、クロックスキューの影響を受けません。

仮想、サブネット、Exit、物理の各トラフィックカウンタは、以下のコンポーネントで構成されます。

proto
ネットワークフローのIANAプロトコル番号
TCPは6、UDPは17。
Exitトラフィックでは空(Destination Loggingが有効な場合を除く)。
src
ネットワークフローの送信元のTailscale IPアドレスとポート。
Exitトラフィックではポート番号は含まれません(Destination Loggingが有効な場合を除く)。
dst
ネットワークフローの宛先のIPアドレスとポート。
このIPアドレスは、Tailscale IPアドレスまたは外部IPアドレス(プライベートネットワーク上またはパブリックIP)のいずれかです。
Exitトラフィックでは空(Destination Loggingが有効な場合を除く)。
txPackets
送信パケット数。
txBytes
送信バイト数。
rxPackets
受信パケット数。
rxBytes
受信バイト数。

ネットワークフローログの有効化

ネットワークフローログはデフォルトでは無効です。

ネットワークフローログを有効にするには、tailnetのOwner、Admin、Network admin、またはIT adminである必要があります。

  1. 管理コンソールのネットワークフローログページを開きます。
  2. 「Start logging」を選択します。
  3. 「Start logging network flows」ダイアログで「Start logging」を選択します。

ネットワークフローログの無効化

ネットワークフローログを無効にするには、tailnetのOwner、Admin、Network admin、またはIT adminである必要があります。

  1. 管理コンソールのネットワークフローログページを開きます。
  2. 「Stop logging」を選択します。
  3. 「Stop logging network flows」ダイアログで「Stop logging」を選択します。

ネットワークログへのアクセス

ネットワークログにアクセスするには、tailnetのOwner、Admin、Network admin、またはIT adminである必要があります。

ネットワークログには、Tailscale APIまたはログストリーミングを使用してアクセスできます。

API経由でのネットワークログアクセス

ネットワークログにアクセスするには、logs:network:readスコープを持つAPIアクセストークンが必要です。

https://api.tailscale.com/api/v2/tailnet/{$TAILNET_ID}/logging/networkエンドポイントの呼び出しからのレスポンスは、Response構造体の形式で返されます。


type Response struct {
	Logs []Message `json:"logs"`
}

Go構文で、Response構造体にはMessage型のスライスが含まれます。Message構造体は以下のように定義されます。


type Message struct {
	// NodeIDは、このネットワークログメッセージを
	// 生成したノードのstable IDです。
	NodeID string `json:"nodeId"` // 例: "n123456CNTRL"

	// Loggedは、Tailscaleログサービスが
	// 指定されたノードからのネットワークログメッセージを
	// 記録したタイムスタンプです。
	// APIリクエストで指定された開始・終了時刻の範囲内であることが
	// 保証されます。
	// すべてのログメッセージは古い順に時系列で一覧表示されます。
	Logged time.Time `json:"logged"`

	// StartとEndは、メッセージ内のネットワークトラフィック
	// フロー情報の時間範囲(両端を含む)です。
	// これらのタイムスタンプはノードによって記録され、
	// 異なるノード間でクロックスキューが発生する可能性があります。
	// 一般的に、LoggedタイムスタンプはEndより後になります。
	//
	// ネットワークログは5秒間のウィンドウで収集されます。
	// この仕様は将来変更される可能性があります。
	Start time.Time `json:"start"`
	End   time.Time `json:"end"`

	// SrcNodeは送信元ノード自体の情報です。
	// このログメッセージを生成したノードです。
	SrcNode Node `json:"srcNode,omitzero"`

	// DstNodesは、送信元ノード(このノード)が
	// 通信したすべての宛先ノードの情報です。
	DstNodes []Node `json:"dstNodes,omitzero"`

	// VirtualTrafficは、ノード間トラフィックの
	// 接続統計を記録します。
	// 送信元と宛先はどちらもTailscale IPアドレス
	// (例: 100.xx.xx.xx)です。
	// 送信元は常に現在のノードのTailscale IPアドレスです。
	VirtualTraffic []ConnectionCounts `json:"virtualTraffic"`

	// SubnetTrafficは、明示的にアドバタイズされた
	// サブネットルート上の
	// ノードから外部へのトラフィックを記録します。
	//
	// Subnet Routerを使用するノードの場合、
	// 送信元は現在のノードのTailscale IPアドレスで、
	// 宛先はサブネット範囲内の外部IPアドレスです。
	// Subnet Routerとして動作するノードの場合、
	// 宛先はSubnet Routerを使用するノードの
	// Tailscale IPアドレスで、
	// 送信元アドレスはアドバタイズされた
	// サブネット範囲内の外部IPアドレスです。
	SubnetTraffic []ConnectionCounts `json:"subnetTraffic"`

	// ExitTrafficは、Exit Nodeを流れる
	// すべてのトラフィックの集約統計を記録します。
	// ノードからExit Node経由でパブリックデバイスへの
	// トラフィックの場合、送信元はTailscale IPアドレスですが、
	// プロトコル、送信元ポート、宛先は空になります。
	// Exit Node経由でパブリックデバイスからノードへの
	// 応答トラフィックの場合、宛先はTailscale IPアドレスですが、
	// プロトコル、宛先ポート、送信元は空になります。
	// プライバシーを保護するため、個々の接続に関する
	// 詳細情報は収集されません。
	ExitTraffic []ConnectionCounts `json:"exitTraffic"`

	// PhysicalTrafficは、仮想Tailscaleネットワークの
	// 下で動作する物理ネットワークレイヤ上の
	// トラフィックを記録します。
	// 送信元は、現在のノードが通信している
	// リモートノードのTailscale IPアドレスで、
	// 宛先は、そのリモートノードと通信するために
	// トラフィックが物理的に送信される
	// 外部IPアドレスです。
	//
	// 物理レイヤのトラフィック情報は
	// 仮想レイヤとはわずかに異なるタイミングで
	// 収集されるため、仮想レイヤを流れるパケットが
	// 物理レイヤのパケットと完全に
	// 一致しない場合があります。
	PhysicalTraffic []ConnectionCounts `json:"physicalTraffic"`
}

Message構造体のいくつかのフィールドはConnectionCounts型を使用しています。
ConnectionCounts構造体は以下のように定義されます。


type ConnectionCounts struct {
	Proto uint8  `json:"proto"` // 例: TCPは6、UDPは17
	Src   string `json:"src"`   // 例: "100.11.22.33:4567"
	Dst   string `json:"dst"`   // 例: "192.55.66.77:80"

	TxPackets uint64 `json:"txPkts"`  // 送信パケット数
	TxBytes   uint64 `json:"txBytes"` // 送信バイト数
	RxPackets uint64 `json:"rxPkts"`  // 受信パケット数
	RxBytes   uint64 `json:"rxBytes"` // 受信バイト数
}

Message構造体のいくつかのフィールドはNode型を使用しています。
Node構造体は以下のように定義されます。


type Node struct {
	// NodeIDはノードのstable IDです。
	NodeID string `json:"nodeId"` // 例: "n123456CNTRL"

	// Nameはノードの完全修飾ホスト名です。
	Name string `json:"name"` // 例: "carbonite.example.ts.net"

	// AddressesはノードのTailscale IPアドレスです。
	Addresses []string `json:"addresses"` // 例: ["100.12.34.56", "fd7a:115c:a1e0::0123:4567"]

	// OSはノードのオペレーティングシステムです。
	OS string `json:"os"` // 例: "linux"

	// Userはノードを所有するユーザです。
	// ノードにタグが付いている場合は設定されません。
	User string `json:"user"` // 例: "johndoe@example.com"

	// Tagsはノードのタグです。
	// ノードがユーザに所有されている場合は設定されません。
	Tags []string `json:"tags"` // 例: ["tag:prod","tag:logs"]
}

Message.NodeIDフィールドは、メッセージの実際の送信元ノードとしてTailscaleログサービスによって検証されます。
StartEndSrcNodeDstNodesVirtualTrafficSubnetTrafficExitTrafficPhysicalTrafficフィールドは個々のノードによって生成され、Tailscaleログサービスは検証なしで記録します。
Tailscaleがこの情報の正確性や真正性を検証することは現実的に不可能です。
悪意のあるノードがこの情報を偽装する可能性があります。

ネットワークフローログを調査する際は、より信頼性が高いと考えられるノード(本番環境で稼働しているサーバなど)と、改竄されやすいと考えられるノード(個々の従業員の業務用ノートPCなど)を区別して識別する必要があります。
両者間のネットワークログの不一致は、悪意のある行動の兆候である可能性があります。

APIで使用できるクエリパラメータは以下の通りです。

start
必須。
取得するログの時間範囲の開始時刻。
RFC 3339タイムスタンプ形式。
例: 2022-07-20T00:00:00Z
end
必須。
取得するログの時間範囲の終了時刻。
RFC 3339タイムスタンプ形式。
endがログ内の最新の既知のタイムスタンプより大きい場合、API呼び出しはブロックしません。これは、同じstartとendの時間範囲で連続してクエリを実行すると、以前のクエリでは利用できなかった異なるログエントリが返される可能性があることを意味します。

startendの時刻は、ナノ秒の精度で両端を含みます(inclusive)。

すべてのログメッセージは、古い順に時系列で一覧表示されます。

APIにはページネーションのサポートや最大ページサイズはありません。
指定された時間範囲内のすべての既知のネットワークアクティビティが返されます。

API呼び出しの例

この例では、API呼び出しに使用する以下の変数が設定されていることを前提とします。

$ACCESS_TOKEN
Tailscale APIを呼び出す際に使用するAPIアクセストークン。
管理コンソールのKeysページでAPIアクセストークンを作成できます。
$TAILNET_ID
tailnet ID。管理コンソールのGeneralページで確認できます。
$START
取得するログの時間範囲の開始時刻。
$END
取得するログの時間範囲の終了時刻。

export ACCESS_TOKEN=tskey-api-k123456CNTRL-0123456789abcdef
export TAILNET_ID=example.com
export START=2022-10-28T22:40:00.000000000Z
export END=2022-10-28T22:40:04.999999999Z

この例では、https://api.tailscale.com/api/v2/tailnet/{$TAILNET_ID}/logging/networkエンドポイントを呼び出します。


curl -u $ACCESS_TOKEN: \
"https://api.tailscale.com/api/v2/tailnet/{$TAILNET_ID}/logging/network?start={$START}&end={$END}"

(このコマンドは管理コンソールのネットワークフローログページからもコピーできます。)

以下はログ出力の例です。


{
	"logs": [
		{
			"start":  "2025-10-28T22:39:51.890385065Z",
			"end":    "2025-10-28T22:39:56.886545512Z",
			"logged": "2025-10-28T22:40:00.290605382Z",

			"nodeId": "nBcdef1CNTRL",
			"srcNode":
					{
						"nodeId": "nBcdef1CNTRL",
						"addresses": ["100.111.22.33", "fd7a:115c:a1e0::c034:c374"],
						"os": "linux",
						"name": "pangolin.example.ts.net",
						"user": "joe@example.com"
					},
			"dstNodes": [
					{
						"nodeId": "n22daC8CNTRL",
						"addresses": ["100.111.44.55", "fd7a:115c:a1e0::abcd:0123"],
						"os": "windows",
						"name": "alice-laptop.example.ts.net",
						"user": "alice@example.com"
					},
					{
						"nodeId": "nX8fDaxCNTRL",
						"addresses": ["100.44.55.66",  "fd7a:115c:a1e0::a1b2:c3d4"],
						"os": "linux",
						"name": "prod.example.ts.net",
						"tags": ["tag:prod"]
					},
					{
						"nodeId": "n7sUpZQCNTRL",
						"addresses": ["100.99.88.77",  "fd7a:115c:a1e0::91ab:84ab"],
						"os": "linux",
						"name": "logstream.remote.ts.net",
						"tags": ["tag:logstream"]
					}
			],
			"virtualTraffic": [
					{
						"proto": 6,
						"src": "100.111.22.33:21291",
						"dst": "100.111.44.55:63281",
						"txPkts": 2,
						"txBytes": 108,
						"rxPkts": 2,
						"rxBytes": 112
					},
					{
						"proto": 6,
						"src": "100.111.22.33:864",
						"dst": "100.44.55.66:2049",
						"txPkts": 6,
						"txBytes": 900,
						"rxPkts": 3,
						"rxBytes": 728
					},
					{
						"proto": 6,
						"src": "100.111.22.33:723",
						"dst": "100.99.88.77:2049",
						"txPkts": 4,
						"txBytes": 596,
						"rxPkts": 2,
						"rxBytes": 432
					},
					{
						"proto": 6,
						"src": "100.111.22.33:21291",
						"dst": "100.111.44.55:63280",
						"txPkts": 2,
						"txBytes": 108,
						"rxPkts": 2,
						"rxBytes": 112
					}
			],
			"physicalTraffic": [
					{
						"src": "100.111.44.55:0",
						"dst": "192.55.66.77:41641",
						"txPkts": 4,
						"txBytes": 384,
						"rxPkts": 4,
						"rxBytes": 384
					},
					{
						"src": "100.44.55.66:0",
						"dst": "192.168.0.101:41641",
						"txPkts": 6,
						"txBytes": 1136,
						"rxPkts": 3,
						"rxBytes": 848
					},
					{
						"src": "100.99.88.77:0",
						"dst": "143.110.111.222:41641",
						"txPkts": 4,
						"txBytes": 752,
						"rxPkts": 2,
						"rxBytes": 512
					}
			]
		}
	]
}

Go用バイナリnetlogfmtを使用すると、出力をより読みやすくできます。


curl -u $ACCESS_TOKEN: \
"https://api.tailscale.com/api/v2/tailnet/{$TAILNET_ID}/logging/network?start={$START}&end={$END}" \
| go run tailscale.com/cmd/netlogfmt@latest

以下はログ出力の例です。


===========================================================================================
NodeID: aBcdef1CNTRL
Logged: 2022-10-28 15:40:00.290
Window: 2022-10-28 15:39:51.890 (4.996s)
-----------------------------------------------------  Tx[P/s]   Tx[B/s]  Rx[P/s]   Rx[B/s]
VirtualTraffic:                                          2.80    342.66     1.80    277.01
    TCP:   100.111.22.33:864   -> 100.44.55.66:2049      1.20    180.14     0.60    145.71
    TCP:   100.111.22.33:723   -> 100.99.88.77:2049      0.80    119.29     0.40     86.47
    TCP:   100.111.22.33:21291 -> 100.111.44.55:63281    0.40     21.62     0.40     22.42
    TCP:   100.111.22.33:21291 -> 100.111.44.55:63280    0.40     21.62     0.40     22.42
PhysicalTraffic:                                         2.80    454.75     1.80    349.07
                 100.44.55.66  -> 192.168.0.101:41641    1.20    227.37     0.60    169.73
                 100.99.88.77  -> 143.111.222.333:41641  0.80    150.52     0.40    102.48
                 100.111.44.55 -> 192.55.66.77:41641     0.80     76.86     0.80     76.86
===========================================================================================

出力でノードを認識しやすくするために、netlogfmtバイナリにはIPアドレスを読みやすいラベルに変換するフラグが用意されています。

--resolve-addrs
Tailscale IPアドレスを読みやすいラベルに変換します。
有効な値は、nodeids(IPアドレスをノードIDに変換)、names(IPアドレスをホスト名に変換)、users(IPアドレスをマシンを所有するユーザまたはタグに変換)のいずれかです。
Tailscale v1.92以降、ネットワークフローログにはノード情報が直接埋め込まれるようになりました。
古いクライアントで生成されたログの場合、--resolve-addrsフラグを使用する際には--api-key--tailnet-nameもパラメータとして指定する必要があります。
--api-key
Tailscale APIに使用するAPIアクセストークンを指定します。
network-logsエンドポイントで使用したものと同じAPIアクセストークン、または別の有効なAPIアクセストークンを使用できます。
--tailnet-name
network-logsエンドポイントに渡したものと同じ組織名です。

以下はnetlogfmtのフラグの使用例です。


curl -u $ACCESS_TOKEN: -X GET \
"https://api.tailscale.com/api/v2/tailnet/{$TAILNET_ID}/logging/network?start={$START}&end={$END}" \
| go run tailscale.com/cmd/netlogfmt@latest --resolve-addrs=names --api-key=$ACCESS_TOKEN --tailnet-name=$TAILNET

前述の通り、ACCESS_TOKENTAILNETは、v1.92より古いクライアントのアドレス解決にのみ必要です。

以下はログ出力の例です。


=======================================================================================
NodeID: aBcdef1CNTRL
Logged: 2022-10-28 15:40:00.290
Window: 2022-10-28 15:39:51.890 (4.996s)
-------------------------------------------------  Tx[P/s]   Tx[B/s]  Rx[P/s]   Rx[B/s]
VirtualTraffic:                                      2.80    342.66     1.80    277.01
    TCP:   carbonite:864 -> prism:2049               1.20    180.14     0.60    145.71
    TCP:   carbonite:723 -> diamond:2049             0.80    119.29     0.40     86.47
    TCP: carbonite:21291 -> glass:63281              0.40     21.62     0.40     22.42
    TCP: carbonite:21291 -> glass:63280              0.40     21.62     0.40     22.42
PhysicalTraffic:                                     2.80    454.75     1.80    349.07
                   prism -> 192.168.0.101:41641      1.20    227.37     0.60    169.73
                 diamond -> 143.110.111.222:41641    0.80    150.52     0.40    102.48
                   glass -> 192.55.66.77:41641       0.80     76.86     0.80     76.86
=======================================================================================

ネットワークフローログのストリーミング

ログストリーミングを使用すると、ネットワークフローログをセキュリティ情報・イベント管理(SIEM)システムにストリーミングできます。
詳細については、ログストリーミングをご参照ください。

制限事項

対応バージョン
Tailscale v1.34以降を使用しているノードのみが、Tailscaleログサービスにネットワーク テレメトリを送信します。
アクセス方法
ネットワークログへのアクセスは、APIおよびSIEMシステムへのストリーミングソースとしてのみ可能です。Tailscale管理コンソールにネットワークログの閲覧機能はありません。
ロギングであり、モニタリングではない
ネットワークフローログはロギング(記録)のためのものであり、モニタリング(監視)のためのものではありません。
管理コンソールにはノード間の接続のライブ表示はありません。また、ネットワークログにはノードがオンラインかアイドル状態かの情報は含まれません。 ログはネットワークトラフィックが発生したかどうかのみを示します。
パケット単位ではない
ネットワークログには個々のパケット転送は含まれません。
ログはアクティブな接続を記録し、それには複数のデータフローが含まれる場合があります。
成功した接続のみ
Tailscaleは成功した接続のみをログに記録します。
接続試行がアクセス拒否された場合、その試行はログに記録されません。
物理レイヤと仮想レイヤの時間差
物理レイヤのトラフィック情報は仮想レイヤとはわずかに異なるタイミングで収集されるため、仮想レイヤを流れるパケットが物理レイヤのパケットと正確に一致しない場合があります。
パブリックIPアドレスの非記録
パブリックIPアドレスは宛先・送信元いずれとしてもログに記録されません。
つまり、tailnetからExit Node経由の接続ではトラフィックの行き先が記録されず、パブリックインターネットからExit Node経由の接続ではトラフィックの返送元が記録されません。
プライバシーを保護するため、Tailscaleは個々の接続に関する詳細情報を収集しません。
管理者がDestination Loggingを有効にした場合、プロトコル、送信元ポート、宛先情報がログに記録されます。
認証ユーザの非記録
送信元・宛先ホストで認証されたユーザはログに記録されません。
ノードをユーザにマッピングするには、/api/v2/tailnet/:tailnet/deviceメソッドを使用し、userフィールドを確認できます。
クライアント側のログ記録
ネットワークログはクライアント側で実行されます。
Tailscaleはクライアントログの配信や完全性を保証できません。
また、クライアントログの遅延閾値を完全に保証することもできません。
つまり、ログはリアルタイムでは配信されません。
パフォーマンスへの影響
ネットワークフローログを有効にすると、クライアントが必要なメトリクスを追跡するための追加処理を行うため、わずかなパフォーマンスへの影響が生じる可能性があります。
増分負荷はフリート全体に分散され、単一ホストに集中することはありません。