diff --git a/hscontrol/apiv2_compat_test.go b/hscontrol/apiv2_compat_test.go new file mode 100644 index 000000000..fd5438bfd --- /dev/null +++ b/hscontrol/apiv2_compat_test.go @@ -0,0 +1,1345 @@ +// This file replays admin API exchanges captured from Tailscale SaaS, in +// order and as the principal SaaS saw, and compares each answer with SaaS's. +// +// Test data source: servertest/testdata/steps/{oauth,policy-api}.hujson, +// loaded by name. oauth's late joins are also replayed with real clients by +// TestAPIv2OAuthClientDeleteCompat in servertest. +// Source format: github.com/juanfont/headscale/hscontrol/types/testcapture + +package hscontrol + +import ( + "bytes" + "encoding/json" + "fmt" + "maps" + "net/http" + "net/http/httptest" + "net/netip" + "net/url" + "path/filepath" + "regexp" + "slices" + "strconv" + "strings" + "testing" + "time" + + apiv2 "github.com/juanfont/headscale/hscontrol/api/v2" + "github.com/juanfont/headscale/hscontrol/mapper" + "github.com/juanfont/headscale/hscontrol/types" + "github.com/juanfont/headscale/hscontrol/types/testcapture" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/tailscale/hujson" + "tailscale.com/tailcfg" + "tailscale.com/types/key" +) + +// apiv2CompatSkipReasons lists checks where headscale differs from SaaS, keyed +// //[/]/, where is the action's index in +// its step, or / for a check over every body in the capture. +// v1-* checks are TestAPIV1PolicyVerdictCompat's. A listed check that matches +// fails, so a fix must delete its entry. +var apiv2CompatSkipReasons = map[string]string{ + "oauth/R2/4/status": missingScopeNotFound, + "oauth/R3/1/status": missingScopeNotFound, + "oauth/R3/2/status": missingScopeNotFound, + "oauth/R3/3/status": missingScopeNotFound, + "oauth/K3/0/status": missingScopeNotFound, + "oauth/J2/0/status": missingScopeNotFound, + "oauth/K4/0/status": bodyBeforeScope, + "oauth/D1/0/message": missingScopeText, + + "oauth/O1/0/scope": scopeEchoAsSent, + "oauth/O3/0/status": mintScopeRefusalStatus, + "oauth/O4/0/scope": unknownScopeGranted, + + "oauth/O4/0/tags": mintTagsNotEchoed, + "oauth/E1/0/tags": mintTagsNotEchoed, + "oauth/E9a/0/tags": mintTagsNotEchoed, + "oauth/T1/0/tags": mintTagsNotEchoed, + "oauth/D0/6/tags": mintTagsNotEchoed, + "oauth/B1/0/tags": mintTagsNotEchoed, + "oauth/B3/0/tags": mintTagsNotEchoed, + "oauth/B11/1/tags": mintTagsNotEchoed, + + "oauth/K1/0/status": unknownPropertyRefused, + "oauth/K1/1/status": unknownPropertyRefused, + "oauth/K2/0/status": unknownKeyType, + "oauth/K5/0/status": unknownKeyType, + + "oauth/J3/1/hostnames": sshTestHostnames, + "oauth/J4/0/hostnames": sshTestHostnames, + "oauth/J3/1/detail": refusalDetail, + "oauth/J4/0/detail": refusalDetail, + + "oauth/E2/0/status": taggedAllClientAnyTag, + "oauth/E9a/1/status": taggedAllClientAnyTag, + + "oauth/E4/0/status": tagRefusalStatus, + "oauth/E5/0/status": tagRefusalStatus, + "oauth/T2/1/status": tagRefusalStatus, + "oauth/T3/1/status": tagRefusalStatus, + + "oauth/T4/1/status": retagRemovesUnownedTag, + "oauth/T4/2/tags": retagRemovesUnownedTag, + "oauth/T4/2/owner": retagRemovesUnownedTag, + "oauth/T5/1/status": retagRemovesUnownedTag, + "oauth/T5/2/tags": retagRemovesUnownedTag, + "oauth/T5/2/owner": retagRemovesUnownedTag, + + "oauth/D0/1/listed": keyListWithoutAll, + "oauth/B11/0/listed": keyListWithoutAll, + "oauth/B11/2/listed": keyListWithoutAll, + "oauth/D0/2/listed": keyListInvalidKeys, + + "oauth/D7/2/status": deletedClientGone, + "oauth/D7/3/message": deletedClientCredentialText, + "oauth/D7/4/message": deletedClientCredentialText, + "oauth/B7/0/message": deletedClientCredentialText, + "oauth/B7/1/message": deletedClientCredentialText, + + "oauth/creator-user-id": taggedKeyNoUserID, + "policy-api/creator-user-id": taggedKeyNoUserID, + "oauth/device-oauth-client": deviceOAuthClientID, + "oauth/empty-route-lists": emptyRouteListsOmitted, + + "policy-api/P2/0/status": noV2Validate, + "policy-api/P3/0/status": noV2Validate, + "policy-api/P4/0/status": noV2Validate, + "policy-api/P5-R1/0/status": noV2Validate, + "policy-api/P5-R2/0/status": noV2Validate, + + "policy-api/P3/1/detail": refusalDetail, + "policy-api/P5-R1/1/detail": refusalDetail, + "policy-api/P5-R2/1/detail": refusalDetail, + + "policy-api/P7/0/body": hujsonFormatted, + "policy-api/P7/1/body": hujsonFormatted, + + "policy-api/P2/0/v1-verdict": v1CheckAcceptsEmpty, +} + +// apiv2CompatNotCompared lists, by key prefix, checks left out: SaaS's +// answer there is in doubt, so it is no reference. +var apiv2CompatNotCompared = []string{ + "policy-api/P2/1/status", + "policy-api/P2/1/enforced", + "policy-api/P2/1/v1-verdict", + "policy-api/P2/1/v1-stored", + "policy-api/P2/1/v1-enforced", + "policy-api/P2/2/body", + "policy-api/P2/2/etag", +} + +// apiv2CompatNotReplayed lists steps left out, keyed /, with +// the objects only they create, which listings then leave out: SaaS's answer +// there is in doubt, so it is no reference. +var apiv2CompatNotReplayed = map[string][]string{ + "oauth/E7": {"{client:C-all-2}"}, + "oauth/E9b": {"{key:K-E9b}"}, +} + +// notCompared reports whether key falls under one of prefixes. +func notCompared(prefixes []string, key string) bool { + return slices.ContainsFunc(prefixes, func(p string) bool { + return strings.HasPrefix(key, p) + }) +} + +// Differences a planned change removes. +const ( + scopeEchoAsSent = "SCOPE_ECHO_AS_SENT: SaaS echoes a token's scopes sorted and without repeats; headscale echoes the request as sent" + bodyBeforeScope = "BODY_BEFORE_SCOPE: headscale validates a createKey body before the token's scope and answers 422; SaaS answers 404 for the missing scope" + taggedAllClientAnyTag = "TAGGED_ALL_CLIENT_ANY_TAG: SaaS lets a tagged all-scope client's token ask only for the client's tags; headscale lets it ask for any tag" + retagRemovesUnownedTag = "RETAG_REMOVES_UNOWNED_TAG: SaaS refuses a token's retag of a device holding a tag outside the token's grant with 400 cannot remove current tags; headscale replaces the tags" + sshTestHostnames = "SSH_TEST_HOSTNAMES: headscale names the nodes behind a failing sshTests destination; SaaS names the destination as written" + v1CheckAcceptsEmpty = "V1_CHECK_ACCEPTS_EMPTY: v1 policy check accepts a zero-length policy; SaaS's validate refuses it" +) + +// Differences no planned change removes yet. +const ( + mintScopeRefusalStatus = "TOKEN_SCOPE_REFUSAL_STATUS: SaaS refuses a token scope the client lacks with 403 and a message; headscale with 400 invalid_scope" + mintTagsNotEchoed = "TOKEN_TAGS_NOT_ECHOED: SaaS's token answer names the token's tags; headscale's has no tags" + unknownPropertyRefused = "UNKNOWN_PROPERTY_REFUSED: SaaS ignores a createKey property it does not define; headscale refuses the body with 422, so the key is never made" + unknownKeyType = "UNKNOWN_KEY_TYPE: SaaS refuses an unknown keyType with 400 before it checks scopes; headscale makes an auth key from it" + tagRefusalStatus = "TAG_REFUSAL_STATUS: SaaS refuses a tag outside the token's grant with 400 requested tags are invalid or not permitted; headscale with 403" + keyListWithoutAll = "KEY_LIST_WITHOUT_ALL: without all=true SaaS lists a token only some auth keys, none to an untagged one; headscale lists every key" + keyListInvalidKeys = "KEY_LIST_INVALID_KEYS: SaaS leaves spent and revoked auth keys out of a listing; headscale lists them" + deletedClientGone = "DELETED_CLIENT_GONE: SaaS keeps a deleted OAuth client readable as invalid and revoked; headscale removes it" + deletedClientCredentialText = "DELETED_CLIENT_CREDENTIAL_TEXT: SaaS refuses a deleted client's secret and tokens with API token invalid; headscale says invalid client credentials and unauthorized" + missingScopeText = "MISSING_SCOPE_TEXT: SaaS refuses a delete outside the token's scopes with calling actor does not have enough permissions; headscale names the missing scope" + taggedKeyNoUserID = "TAGGED_KEY_NO_USER_ID: SaaS shows the creating user's userId on a tagged auth key the admin made; headscale leaves userId off every tagged key" + deviceOAuthClientID = "DEVICE_OAUTH_CLIENT_ID: SaaS device bodies carry oauthClientId, naming the join key or the OAuth client that made it; headscale's have no such field" + emptyRouteListsOmitted = "EMPTY_ROUTE_LISTS_OMITTED: SaaS sends advertisedRoutes and enabledRoutes as [] for a device without routes under fields=all; headscale leaves both out" + refusalDetail = "REFUSAL_DETAIL: SaaS puts a refused policy's reason in message, with one detail per failing test naming the user; headscale answers setting policy with the reason as one detail without a user" + noV2Validate = "NO_V2_VALIDATE: headscale's v2 API has no /acl/validate" + hujsonFormatted = "HUJSON_FORMATTED: SaaS stores a HuJSON policy formatted, comments kept; headscale stores the bytes as sent" +) + +// SaaS behaviour recorded as it is; following it is the maintainer's call. +const ( + missingScopeNotFound = "MISSING_SCOPE_NOT_FOUND: SaaS answers a call outside the token's scopes with 404 not found; headscale answers 403" + unknownScopeGranted = "UNKNOWN_SCOPE_GRANTED: SaaS ignores an unknown requested scope and grants the client's own; headscale grants the unknown scope alone" +) + +// TestAPIv2OAuthCompat replays OAuth clients, token exchanges, auth keys, +// device reads and tag writes by principal: admin-made clients of every +// scope, scope narrowing, token-made clients and their tokens, tag writes on +// devices tagged outside the token's grant, key listing and deletes by scope, +// and a parent client deleted while its key and child client live on. +func TestAPIv2OAuthCompat(t *testing.T) { + runAPICompat(t, "oauth", false) +} + +// TestAPIv2ACLCompat replays policy writes over a fixed baseline: an +// identical write, zero-length, newline-only and empty-object bodies, a cut +// short body, a failing test, If-Match with a stale and the current ETag and +// ts-default, and HuJSON with a comment. It compares statuses, messages, the +// stored body, ETag relations and whether the enforced policy changed. +func TestAPIv2ACLCompat(t *testing.T) { + runAPICompat(t, "policy-api", false) +} + +// TestAPIV1PolicyVerdictCompat sends the same policy bodies through the v1 +// API: each write through PUT /api/v1/policy and each validate through +// /api/v1/policy/check. The verdict, whether the stored policy changed and +// whether the enforced policy changed must match SaaS's. +func TestAPIV1PolicyVerdictCompat(t *testing.T) { + runAPICompat(t, "policy-api", true) +} + +func runAPICompat(t *testing.T, id string, v1 bool) { + t.Helper() + + c, err := testcapture.Read(filepath.Join("servertest", "testdata", "steps", id+".hujson")) + require.NoError(t, err) + require.NotEmpty(t, c.Steps, "%s: not a step capture", id) + + r := newAPIReplay(t, c, v1) + + for _, step := range c.Steps { + // A setup-failed step sent nothing. + require.Contains(t, []string{"observed", "setup-failed"}, step.Result, step.Name) + + if objs, ok := apiv2CompatNotReplayed[id+"/"+step.Name]; ok { + r.unlisted = append(r.unlisted, objs...) + + continue + } + + r.step(t, step) + } + + if !v1 { + r.aggregateChecks(t) + } + + for k := range apiv2CompatSkipReasons { + check := k[strings.LastIndex(k, "/")+1:] + if strings.HasPrefix(k, id+"/") && strings.HasPrefix(check, "v1-") == v1 && !r.evaluated[k] { + t.Errorf("skip entry %q names no check", k) + } + } +} + +// apiReplay replays one capture's actions against headscale. SaaS labels +// ({key:K}, {client:C}, {device:x}, {etag:N}) map to headscale's IDs and +// ETags as the replay creates them. +type apiReplay struct { + c *testcapture.Capture + app *Headscale + v2 http.Handler + v1 http.Handler + useV1 bool + + admin string + names map[string]string // SaaS email → capture user name + + ids map[string]string // SaaS label → headscale ID + labels map[string]string // "/" → SaaS label + secrets map[string]string // key or client label → secret + tokens map[string]string // principal → access token + addrs map[string]string // SaaS node address → headscale's + + // ETag relations: where each ETag was first seen, per side. + saasETag, hsETag map[string]string + hsByLabel map[string]string + + // saasCurrentETag is SaaS's last ETag, for the v1 replay. + saasCurrentETag string + + // saasBaseline is the enforced policy every policy row starts from. + saasBaseline map[string]string + + refusals map[string][2][]byte + + // aggregates holds per-object observations checked over the whole + // capture: check → object label → [SaaS, headscale] values seen. + aggregates map[string]map[string][2]map[string]bool + + // unlisted holds labels of objects made by steps left out. + unlisted []string + + evaluated map[string]bool +} + +func newAPIReplay(t *testing.T, c *testcapture.Capture, useV1 bool) *apiReplay { + t.Helper() + + app := newAddressedTestApp(t) + + r := &apiReplay{ + c: c, + app: app, + v1: newHumaTestHandler(app), + useV1: useV1, + names: map[string]string{}, + ids: map[string]string{}, + labels: map[string]string{}, + secrets: map[string]string{}, + tokens: map[string]string{}, + addrs: map[string]string{}, + saasETag: map[string]string{}, + hsETag: map[string]string{}, + hsByLabel: map[string]string{}, + refusals: map[string][2][]byte{}, + aggregates: map[string]map[string][2]map[string]bool{}, + evaluated: map[string]bool{}, + } + + users := map[string]*types.User{} + for _, u := range c.Topology.Users { + users[u.Name] = app.state.CreateUserForTest(u.Name) + r.names[u.Email] = u.Name + } + + // SaaS admin calls act as the tailnet owner. + owner, ok := users[r.names[c.Tailnet]] + require.True(t, ok, "%s: tailnet %q is not a capture user", c.TestID, c.Tailnet) + + admin, apiKey, err := app.state.CreateAPIKey(nil) + require.NoError(t, err) + require.NoError(t, app.state.SetAPIKeyUser(apiKey.ID, types.UserID(owner.ID))) + + r.admin = admin + + r.v2, _ = apiv2.Handler(apiv2.Backend{State: app.state, Change: app.Change, Cfg: app.cfg}) + + return r +} + +// newAddressedTestApp is [createTestApp] with address prefixes, so joined +// nodes get addresses the replayed policies can name. +func newAddressedTestApp(t *testing.T) *Headscale { + t.Helper() + + tmpDir := t.TempDir() + prefixV4 := netip.MustParsePrefix("100.64.0.0/10") + prefixV6 := netip.MustParsePrefix("fd7a:115c:a1e0::/48") + + cfg := types.Config{ + ServerURL: "http://localhost:8080", + NoisePrivateKeyPath: tmpDir + "/noise_private.key", + PrefixV4: &prefixV4, + PrefixV6: &prefixV6, + IPAllocation: types.IPAllocationStrategySequential, + Database: types.DatabaseConfig{ + Type: "sqlite3", + Sqlite: types.SqliteConfig{Path: tmpDir + "/headscale_test.db"}, + }, + Policy: types.PolicyConfig{Mode: types.PolicyModeDB}, + Tuning: types.Tuning{BatchChangeDelay: 100 * time.Millisecond, BatcherWorkers: 1}, + } + + app, err := NewHeadscale(&cfg) + require.NoError(t, err) + + app.mapBatcher = mapper.NewBatcherAndMapper(&cfg, app.state) + app.mapBatcher.Start() + t.Cleanup(app.mapBatcher.Close) + + return app +} + +// apiCheck is one rendering of an outcome: SaaS's and headscale's. +type apiCheck struct { + name, want, got string +} + +func (r *apiReplay) step(t *testing.T, step testcapture.Step) { + t.Helper() + + var checks []apiCheck + + for i, a := range step.Actions { + prefix := strconv.Itoa(i) + "/" + + var got []apiCheck + + switch a.Kind { + case "join": + got = r.join(t, step, a) + case "token": + got = r.token(t, a) + case "api", "policy": + got = r.api(t, step, i, a) + case "cli", "wait", "retire": + // Client settings, SaaS settle time and the run's cleanup. + default: + t.Fatalf("%s: no replay for action %q", step.Name, a.Kind) + } + + for _, ch := range got { + // The v1 replay sets up through v2, whose checks the v2 tests own. + if strings.HasPrefix(ch.name, "v1-") == r.useV1 { + ch.name = prefix + ch.name + checks = append(checks, ch) + } + } + } + + keyPrefix := r.c.TestID + "/" + step.Name + "/" + checks = slices.DeleteFunc(checks, func(ch apiCheck) bool { + return notCompared(apiv2CompatNotCompared, keyPrefix+ch.name) + }) + + if len(checks) == 0 { + return + } + + // Marked here, so a run filtered to other steps does not call these + // entries stale. + for _, ch := range checks { + r.evaluated[keyPrefix+ch.name] = true + } + + t.Run(step.Name, func(t *testing.T) { + for _, ch := range checks { + t.Run(ch.name, func(t *testing.T) { + apiCompatCheck(t, keyPrefix+ch.name, ch.want, ch.got) + }) + } + }) +} + +func apiCompatCheck(t *testing.T, key, want, got string) { + t.Helper() + + reason, listed := apiv2CompatSkipReasons[key] + + switch { + case listed && want == got: + t.Errorf("matches SaaS; delete apiv2CompatSkipReasons[%q] (%s)", key, reason) + case listed: + t.Skip(reason) + default: + assert.Equal(t, want, got) + } +} + +// join registers the node with the labelled key, as the capture's stock +// client did, and records its device ID. +func (r *apiReplay) join(t *testing.T, step testcapture.Step, a testcapture.Action) []apiCheck { + t.Helper() + + secret, ok := r.secrets[a.Key] + require.True(t, ok, "%s: join with unknown key %s", step.Name, a.Key) + + hi := &tailcfg.Hostinfo{Hostname: a.Hostname} + if a.RequestTags != nil { + hi.RequestTags = *a.RequestTags + } + + for _, route := range a.Routes { + hi.RoutableIPs = append(hi.RoutableIPs, netip.MustParsePrefix(route)) + } + + node, change, err := r.app.state.HandleNodeFromPreAuthKey(tailcfg.RegisterRequest{ + Auth: &tailcfg.RegisterResponseAuth{AuthKey: secret}, + NodeKey: key.NewNode().Public(), + Hostinfo: hi, + Expiry: time.Now().Add(24 * time.Hour), + }, key.NewMachine().Public()) + r.app.Change(change) + + got := "accepted" + if err != nil { + got = "refused: " + err.Error() + } else { + label := "{device:" + a.Node + "}" + r.ids[label] = node.StringID() + r.labels["device/"+node.StringID()] = label + + // Policies name SaaS's addresses for the node. + topo := r.c.Topology.Nodes[a.Node] + + for _, ip := range node.IPs() { + if ip.Is4() { + r.addrs[topo.IPv4] = ip.String() + } else { + r.addrs[topo.IPv6] = ip.String() + } + } + } + + want := "refused" + if att := step.Register[a.Node]; len(att) > 0 && att[len(att)-1].MachineAuthorized != nil && + *att[len(att)-1].MachineAuthorized { + want = "accepted" + } + + return []apiCheck{{"join", want, got}} +} + +// token runs the client-credentials exchange the action records. The form +// carries the client's secret, scope and tags as SaaS received them. +func (r *apiReplay) token(t *testing.T, a testcapture.Action) []apiCheck { + t.Helper() + + secret, ok := r.secrets[a.Client] + require.True(t, ok, "token for unknown client %s", a.Client) + + form := url.Values{"grant_type": {"client_credentials"}, "client_secret": {secret}} + if a.Scope != nil { + form.Set("scope", *a.Scope) + } + + if a.RequestTags != nil { + form.Set("tags", strings.Join(*a.RequestTags, " ")) + } + + status, _, body := r.serve(t, http.MethodPost, "/api/v2/oauth/token", + map[string]string{"Content-Type": "application/x-www-form-urlencoded"}, []byte(form.Encode()), r.v2) + + checks := []apiCheck{{"status", strconv.Itoa(a.Status), strconv.Itoa(status)}} + + var want, got struct { + AccessToken string `json:"access_token"` + Scope string `json:"scope"` + Tags string `json:"tags"` + TokenType string `json:"token_type"` + ExpiresIn int `json:"expires_in"` + } + + require.NoError(t, json.Unmarshal(a.Response, &want)) + require.NoErrorf(t, json.Unmarshal(body, &got), "token body: %s", body) + + switch { + case a.Status == http.StatusOK && status == http.StatusOK: + r.tokens[a.Principal] = got.AccessToken + + checks = append(checks, + apiCheck{"scope", want.Scope, got.Scope}, + apiCheck{"tags", want.Tags, got.Tags}, + apiCheck{ + "token", + fmt.Sprintf("type %s expires_in %d", want.TokenType, want.ExpiresIn), + fmt.Sprintf("type %s expires_in %d", got.TokenType, got.ExpiresIn), + }, + ) + case status == http.StatusOK: + // SaaS sent nothing with a token it refused. + r.tokens[a.Principal] = got.AccessToken + case a.Status == status: + checks = append(checks, messageCheck(t, a.Response, body)) + } + + return checks +} + +var labelRE = regexp.MustCompile(`\{(?:device|key|client):[^}]+\}`) + +// api sends one admin API call as its principal and compares the answer. +func (r *apiReplay) api(t *testing.T, step testcapture.Step, i int, a testcapture.Action) []apiCheck { + t.Helper() + + endpoint, _, _ := strings.Cut(a.Path, "?") + isPolicy := endpoint == "/tailnet/-/acl" || endpoint == "/tailnet/-/acl/validate" + + if r.useV1 && isPolicy { + return r.v1Policy(t, step, i, a) + } + + if r.useV1 && a.Method == http.MethodGet { + return nil + } + + isWrite := a.Method == http.MethodPost && endpoint == "/tailnet/-/acl" + path, header, body := r.request(t, a, isPolicy) + + var before string + if isWrite { + before = r.enforcedNow(t) + } + + status, respHeader, resp := r.serve(t, a.Method, path, header, body, r.v2) + + checks := []apiCheck{{"status", strconv.Itoa(a.Status), strconv.Itoa(status)}} + + saasOK := a.Status/100 == 2 + hsOK := status/100 == 2 + + if !saasOK && a.Status == status && len(a.Response) > 0 { + checks = append(checks, messageCheck(t, a.Response, resp)) + } + + // Labelled also when SaaS refused it, so listings name what headscale + // made. + if hsOK { + r.record(t, a, resp) + } + + if saasOK && hsOK { + checks = append(checks, r.bodyChecks(t, a, endpoint, resp)...) + } + + if label := a.RespHeader["ETag"]; label != "" && saasOK && hsOK { + checks = append(checks, r.etagCheck(step, i, label, respHeader.Get("ETag"))) + } + + if isWrite { + if a.Kind == "api" && !saasOK { + checks = append(checks, r.refusalChecks(t, a, body, resp)...) + } + + if ch, ok := r.enforcedCheck(t, step, a.Kind, before); ok { + checks = append(checks, ch) + } + } + + return checks +} + +// request is the call a sent, with SaaS's labels, emails and addresses +// replaced by headscale's and its principal's credential. +func (r *apiReplay) request(t *testing.T, a testcapture.Action, isPolicy bool) (string, map[string]string, []byte) { + t.Helper() + + body := []byte(a.Body) + if isPolicy { + body = r.policyBody(t, a.Body) + } + + header := maps.Clone(a.Header) + if header == nil { + header = map[string]string{} + } + + if hs, ok := r.hsByLabel[header["If-Match"]]; ok { + header["If-Match"] = hs + } + + if _, ok := header["Content-Type"]; !ok && a.Body != nil { + header["Content-Type"] = "application/json" + } + + switch { + case a.Principal == "admin": + header["Authorization"] = "Bearer " + r.admin + case strings.HasPrefix(a.Principal, "token:"): + // A token headscale never issued is refused like a missing one. + header["Authorization"] = "Bearer " + r.tokens[a.Principal] + default: + t.Fatalf("unknown principal %q", a.Principal) + } + + path := "/api/v2" + labelRE.ReplaceAllStringFunc(a.Path, func(l string) string { + if id, ok := r.ids[l]; ok { + return id + } + + return "unknown" + }) + + return path, header, body +} + +// serve sends one request to handler and returns its answer. +func (r *apiReplay) serve( + t *testing.T, + method, path string, + header map[string]string, + body []byte, + handler http.Handler, +) (int, http.Header, []byte) { + t.Helper() + + req := httptest.NewRequestWithContext(t.Context(), method, path, bytes.NewReader(body)) + for k, v := range header { + req.Header.Set(k, v) + } + + rec := httptest.NewRecorder() + handler.ServeHTTP(rec, req) + + return rec.Code, rec.Header(), rec.Body.Bytes() +} + +// policyBody is a policy body as headscale must receive it: HuJSON and +// zero-length bodies are stored as JSON strings, and SaaS's user emails and +// node addresses become headscale's. +func (r *apiReplay) policyBody(t *testing.T, raw json.RawMessage) []byte { + t.Helper() + + s := string(raw) + if strings.HasPrefix(s, `"`) { + require.NoError(t, json.Unmarshal(raw, &s)) + } + + for email, name := range r.names { + s = strings.ReplaceAll(s, email, name+"@") + } + + // Quoted, so one address cannot rewrite a longer one it prefixes. + for saas, hs := range r.addrs { + s = strings.ReplaceAll(s, `"`+saas+`"`, `"`+hs+`"`) + } + + return []byte(s) +} + +// apiBody is the union of the v2 bodies the checks read: keys, OAuth +// clients, devices and errors. Raw fields keep absent apart from null and []. +type apiBody struct { + ID string `json:"id"` + KeyType string `json:"keyType"` + Description string `json:"description"` + ExpirySeconds int64 `json:"expirySeconds"` + Invalid bool `json:"invalid"` + Revoked *string `json:"revoked"` + UserID *string `json:"userId"` + Scopes []string `json:"scopes"` + Tags []string `json:"tags"` + Capabilities *struct { + Devices struct { + Create struct { + Reusable bool `json:"reusable"` + Ephemeral bool `json:"ephemeral"` + Preauthorized bool `json:"preauthorized"` + Tags []string `json:"tags"` + } `json:"create"` + } `json:"devices"` + } `json:"capabilities"` + + User string `json:"user"` + AdvertisedRoutes json.RawMessage `json:"advertisedRoutes"` + EnabledRoutes json.RawMessage `json:"enabledRoutes"` + OAuthClientID *string `json:"oauthClientId"` + + Keys json.RawMessage `json:"keys"` + Devices []apiBody `json:"devices"` +} + +func decodeBody(t *testing.T, raw []byte) apiBody { + t.Helper() + + var b apiBody + if len(raw) > 0 { + require.NoErrorf(t, json.Unmarshal(raw, &b), "body: %s", raw) + } + + return b +} + +// record learns the IDs and secrets of what a create returned. +func (r *apiReplay) record(t *testing.T, a testcapture.Action, resp []byte) { + t.Helper() + + if a.Method != http.MethodPost || a.Path != "/tailnet/-/keys" { + return + } + + var created struct { + ID string `json:"id"` + Key string `json:"key"` + KeyType string `json:"keyType"` + } + require.NoError(t, json.Unmarshal(resp, &created)) + + name, label := a.Key, "{key:"+a.Key+"}" + if created.KeyType == "client" { + name, label = a.Client, "{client:"+a.Client+"}" + } + + r.ids[label] = created.ID + r.labels[created.KeyType+"/"+created.ID] = label + r.secrets[name] = created.Key +} + +// bodyChecks compares what a successful call returned, by endpoint. +func (r *apiReplay) bodyChecks(t *testing.T, a testcapture.Action, endpoint string, resp []byte) []apiCheck { + t.Helper() + + switch { + case endpoint == "/tailnet/-/acl": + return []apiCheck{r.policyCheck(t, a, resp)} + + case endpoint == "/tailnet/-/keys" && a.Method == http.MethodGet: + return []apiCheck{{"listed", r.listedKeys(t, a.Response), r.listedKeys(t, resp)}} + + case strings.HasPrefix(endpoint, "/tailnet/-/keys") && a.Method != http.MethodDelete: + return r.keyChecks(decodeBody(t, a.Response), decodeBody(t, resp)) + + case endpoint == "/tailnet/-/devices": + return r.deviceListChecks(t, a, resp) + + case strings.HasSuffix(endpoint, "/routes"): + want, got := decodeBody(t, a.Response), decodeBody(t, resp) + + return []apiCheck{{"routes", routesOf(want), routesOf(got)}} + + case strings.HasPrefix(endpoint, "/device/") && a.Method == http.MethodGet: + alias := strings.TrimSuffix(strings.TrimPrefix(endpoint, "/device/{device:"), "}") + + return r.deviceChecks("", alias, strings.Contains(a.Path, "fields=all"), decodeBody(t, a.Response), decodeBody(t, resp)) + } + + return nil +} + +// keyChecks compares an auth key or OAuth client. +func (r *apiReplay) keyChecks(want, got apiBody) []apiCheck { + r.observe("creator-user-id", want.ID, presence(want.UserID != nil), presence(got.UserID != nil)) + + state := func(b apiBody) string { + return fmt.Sprintf("invalid %t revoked %s", b.Invalid, presence(b.Revoked != nil)) + } + + checks := []apiCheck{ + {"key-type", want.KeyType, got.KeyType}, + {"description", want.Description, got.Description}, + {"state", state(want), state(got)}, + } + + if want.KeyType == "client" { + return append(checks, + apiCheck{"scopes", sortedStrings(want.Scopes), sortedStrings(got.Scopes)}, + apiCheck{"tags", sortedStrings(want.Tags), sortedStrings(got.Tags)}, + ) + } + + caps := func(b apiBody) string { + if b.Capabilities == nil { + return "none" + } + + c := b.Capabilities.Devices.Create + + return fmt.Sprintf("reusable %t ephemeral %t preauthorized %t tags %s", + c.Reusable, c.Ephemeral, c.Preauthorized, sortedStrings(c.Tags)) + } + + return append(checks, + apiCheck{"capabilities", caps(want), caps(got)}, + apiCheck{"expiry", strconv.FormatInt(want.ExpirySeconds, 10), strconv.FormatInt(got.ExpirySeconds, 10)}, + ) +} + +// listedKeys renders a key listing as the labels it holds. +func (r *apiReplay) listedKeys(t *testing.T, raw []byte) string { + t.Helper() + + b := decodeBody(t, raw) + if string(b.Keys) == "null" { + return "null" + } + + var keys []apiBody + require.NoError(t, json.Unmarshal(b.Keys, &keys)) + + labels := make([]string, 0, len(keys)) + for _, k := range keys { + if l := r.label(k.KeyType, k.ID); !slices.Contains(r.unlisted, l) { + labels = append(labels, l) + } + } + + return sortedStrings(labels) +} + +// label maps an ID from either side to its SaaS label. +func (r *apiReplay) label(kind, id string) string { + if strings.HasPrefix(id, "{") { + return id + } + + if l, ok := r.labels[kind+"/"+id]; ok { + return l + } + + return "{unmatched}" +} + +func (r *apiReplay) deviceListChecks(t *testing.T, a testcapture.Action, resp []byte) []apiCheck { + t.Helper() + + all := strings.Contains(a.Path, "fields=all") + want, got := decodeBody(t, a.Response), decodeBody(t, resp) + + byLabel := func(devs []apiBody) map[string]apiBody { + m := make(map[string]apiBody, len(devs)) + for _, d := range devs { + m[r.label("device", d.ID)] = d + } + + return m + } + + wantBy, gotBy := byLabel(want.Devices), byLabel(got.Devices) + checks := []apiCheck{{"listed", sortedStrings(slices.Collect(maps.Keys(wantBy))), sortedStrings(slices.Collect(maps.Keys(gotBy)))}} + + for _, l := range slices.Sorted(maps.Keys(wantBy)) { + g, ok := gotBy[l] + if !ok { + continue + } + + alias := strings.TrimSuffix(strings.TrimPrefix(l, "{device:"), "}") + checks = append(checks, r.deviceChecks(alias+"/", alias, all, wantBy[l], g)...) + } + + return checks +} + +// deviceChecks compares a device's tags, owner and, with fields=all, routes. +func (r *apiReplay) deviceChecks(prefix, alias string, all bool, want, got apiBody) []apiCheck { + label := "{device:" + alias + "}" + + r.observe("device-oauth-client", label, optional(want.OAuthClientID), optional(got.OAuthClientID)) + + checks := []apiCheck{ + {prefix + "tags", sortedStrings(want.Tags), sortedStrings(got.Tags)}, + {prefix + "owner", deviceOwner(want.Tags, r.userName(want.User)), deviceOwner(got.Tags, got.User)}, + } + + if all { + checks = append(checks, apiCheck{prefix + "routes", routesOf(want), routesOf(got)}) + + if routesOf(want) == routesOf(apiBody{}) { + r.observe("empty-route-lists", label, listShape(want), listShape(got)) + } + } + + return checks +} + +func (r *apiReplay) userName(email string) string { + if name, ok := r.names[email]; ok { + return name + } + + return email +} + +func deviceOwner(tags []string, user string) string { + if len(tags) > 0 { + return "tags " + sortedStrings(tags) + } + + return "user " + user +} + +func routesOf(b apiBody) string { + list := func(raw json.RawMessage) []string { + var out []string + if len(raw) > 0 { + _ = json.Unmarshal(raw, &out) + } + + return out + } + + return fmt.Sprintf("advertised %s enabled %s", sortedStrings(list(b.AdvertisedRoutes)), sortedStrings(list(b.EnabledRoutes))) +} + +// listShape is how a body wrote its route lists: absent, null or []. +func listShape(b apiBody) string { + shape := func(raw json.RawMessage) string { + if raw == nil { + return "absent" + } + + return string(raw) + } + + return "advertised " + shape(b.AdvertisedRoutes) + " enabled " + shape(b.EnabledRoutes) +} + +func presence(set bool) string { + if set { + return "set" + } + + return "absent" +} + +func optional(s *string) string { + if s == nil { + return "absent" + } + + return *s +} + +// observe records one object's value on each side for a check over the +// whole capture. +func (r *apiReplay) observe(check, label, want, got string) { + if r.aggregates[check] == nil { + r.aggregates[check] = map[string][2]map[string]bool{} + } + + seen, ok := r.aggregates[check][label] + if !ok { + seen = [2]map[string]bool{{}, {}} + r.aggregates[check][label] = seen + } + + seen[0][want] = true + seen[1][got] = true +} + +// aggregateChecks compares, per check, every object's values over the +// capture: each one field headscale renders the same way for every object. +func (r *apiReplay) aggregateChecks(t *testing.T) { + t.Helper() + + checks := make([]apiCheck, 0, len(r.aggregates)) + + for _, check := range slices.Sorted(maps.Keys(r.aggregates)) { + var want, got []string + + for _, label := range slices.Sorted(maps.Keys(r.aggregates[check])) { + seen := r.aggregates[check][label] + want = append(want, label+"="+strings.Join(slices.Sorted(maps.Keys(seen[0])), "|")) + got = append(got, label+"="+strings.Join(slices.Sorted(maps.Keys(seen[1])), "|")) + } + + checks = append(checks, apiCheck{check, strings.Join(want, " "), strings.Join(got, " ")}) + } + + for _, ch := range checks { + key := r.c.TestID + "/" + ch.name + r.evaluated[key] = true + + t.Run(ch.name, func(t *testing.T) { + apiCompatCheck(t, key, ch.want, ch.got) + }) + } +} + +// messageCheck passes when SaaS's error message appears in headscale's +// answer, as its message, OAuth error description or one of its details. +func messageCheck(t *testing.T, saas, hs []byte) apiCheck { + t.Helper() + + var want struct { + Message string `json:"message"` + } + require.NoError(t, json.Unmarshal(saas, &want)) + + texts := errorTexts(hs) + for _, s := range texts { + if strings.Contains(s, want.Message) { + return apiCheck{"message", want.Message, want.Message} + } + } + + return apiCheck{"message", want.Message, strings.Join(texts, " | ")} +} + +func errorTexts(raw []byte) []string { + var body struct { + Message string `json:"message"` + Error string `json:"error"` + ErrorDescription string `json:"error_description"` + Data []struct { + Errors []string `json:"errors"` + } `json:"data"` + } + + if json.Unmarshal(raw, &body) != nil { + return []string{string(raw)} + } + + texts := []string{body.Message, body.ErrorDescription} + for _, d := range body.Data { + texts = append(texts, d.Errors...) + } + + return slices.DeleteFunc(texts, func(s string) bool { return s == "" }) +} + +// policyCheck compares a policy answer: the HuJSON text byte for byte when +// SaaS sent text, else the document. +func (r *apiReplay) policyCheck(t *testing.T, a testcapture.Action, resp []byte) apiCheck { + t.Helper() + + want := string(r.policyBody(t, a.Response)) + if strings.HasPrefix(string(a.Response), `"`) { + return apiCheck{"body", want, string(resp)} + } + + return apiCheck{"body", canonicalPolicy(t, []byte(want)), canonicalPolicy(t, resp)} +} + +func canonicalPolicy(t *testing.T, raw []byte) string { + t.Helper() + + std, err := hujson.Standardize(bytes.Clone(raw)) + require.NoErrorf(t, err, "policy: %s", raw) + + var v any + require.NoError(t, json.Unmarshal(std, &v)) + + out, err := json.Marshal(v) + require.NoError(t, err) + + return string(out) +} + +// etagCheck compares where each side first saw the answer's ETag. +func (r *apiReplay) etagCheck(step testcapture.Step, i int, label, hs string) apiCheck { + here := fmt.Sprintf("%s/%d", step.Name, i) + + first := func(seen map[string]string, v string) string { + if at, ok := seen[v]; ok { + return "same as " + at + } + + seen[v] = here + + return "new" + } + + if _, ok := r.hsByLabel[label]; !ok { + r.hsByLabel[label] = hs + } + + return apiCheck{"etag", first(r.saasETag, label), first(r.hsETag, hs)} +} + +// refusalChecks compare a refused policy write's detail: the hostnames it +// names that the policy does not, how many detail entries for which users, +// and whether a second principal sending the same body got the same answer. +func (r *apiReplay) refusalChecks(t *testing.T, a testcapture.Action, sent, resp []byte) []apiCheck { + t.Helper() + + var hostnames []string + + for _, n := range r.c.Topology.Nodes { + if !bytes.Contains(sent, []byte(n.Hostname)) { + hostnames = append(hostnames, n.Hostname) + } + } + + named := func(texts []string) string { + var out []string + + for _, h := range hostnames { + if slices.ContainsFunc(texts, func(s string) bool { return strings.Contains(s, h) }) { + out = append(out, h) + } + } + + return sortedStrings(out) + } + + var want, got struct { + Data []struct { + User string `json:"user"` + } `json:"data"` + } + + require.NoError(t, json.Unmarshal(a.Response, &want)) + require.NoError(t, json.Unmarshal(resp, &got)) + + users := func(data []struct { + User string `json:"user"` + }, + ) string { + out := make([]string, 0, len(data)) + for _, d := range data { + out = append(out, r.userName(d.User)) + } + + return fmt.Sprintf("%q", out) + } + + checks := []apiCheck{ + {"hostnames", named(errorTexts(a.Response)), named(errorTexts(resp))}, + {"detail", users(want.Data), users(got.Data)}, + } + + if prev, ok := r.refusals[string(sent)]; ok && bytes.Equal(prev[0], a.Response) { + checks = append(checks, apiCheck{"same-answer", "same", map[bool]string{true: "same", false: "differs"}[bytes.Equal(prev[1], resp)]}) + } + + r.refusals[string(sent)] = [2][]byte{a.Response, resp} + + return checks +} + +// enforcedNow renders what every replayed node enforces: its filter rules and +// SSH rules. +func (r *apiReplay) enforcedNow(t *testing.T) string { + t.Helper() + + var b strings.Builder + + for _, label := range slices.Sorted(maps.Keys(r.ids)) { + if !strings.HasPrefix(label, "{device:") { + continue + } + + id, err := strconv.ParseUint(r.ids[label], 10, 64) + require.NoError(t, err) + + nv, ok := r.app.state.GetNodeByID(types.NodeID(id)) + require.True(t, ok, label) + + rules, err := r.app.state.FilterForNode(nv) + require.NoError(t, err) + + ssh, err := r.app.state.SSHPolicy(nv) + require.NoError(t, err) + + out, err := json.Marshal([]any{rules, ssh}) + require.NoError(t, err) + + fmt.Fprintf(&b, "%s %s\n", label, out) + } + + return b.String() +} + +// enforcedCheck compares whether a policy row changed what nodes enforce. +// Every row starts from the baseline the first captured step installed, so +// SaaS's change is its nodes' rules against that step's. +func (r *apiReplay) enforcedCheck(t *testing.T, step testcapture.Step, kind, before string) (apiCheck, bool) { + t.Helper() + + if len(step.Captures) == 0 || kind != "api" { + return apiCheck{}, false + } + + saas := make(map[string]string, len(step.Captures)) + + for alias, n := range step.Captures { + out, err := json.Marshal([]any{n.PacketFilterRules, n.SSHRules}) + require.NoError(t, err) + + saas[alias] = string(out) + } + + if r.saasBaseline == nil { + r.saasBaseline = saas + + return apiCheck{}, false + } + + name := "enforced" + if r.useV1 { + name = "v1-enforced" + } + + return apiCheck{name, changed(!maps.Equal(saas, r.saasBaseline)), changed(r.enforcedNow(t) != before)}, true +} + +// v1Policy sends a policy write or validate through the v1 API. Writes +// refused by SaaS only for their If-Match have no v1 form and are not sent. +func (r *apiReplay) v1Policy(t *testing.T, step testcapture.Step, i int, a testcapture.Action) []apiCheck { + t.Helper() + + endpoint, _, _ := strings.Cut(a.Path, "?") + + if a.Method == http.MethodGet { + if label := a.RespHeader["ETag"]; label != "" { + r.saasCurrentETag = label + } + + return nil + } + + if _, ok := a.Header["If-Match"]; ok && a.Status == http.StatusPreconditionFailed { + return nil + } + + body, err := json.Marshal(map[string]string{"policy": string(r.policyBody(t, a.Body))}) + require.NoError(t, err) + + verdict := func(ok bool) string { + if ok { + return "accepted" + } + + return "refused" + } + + if endpoint == "/tailnet/-/acl/validate" { + res := callHandler(r.v1, http.MethodPost, "/api/v1/policy/check", body) + + // SaaS's validate answers 200 with a message for some refusals. + var saas struct { + Message string `json:"message"` + } + require.NoError(t, json.Unmarshal(a.Response, &saas)) + + return []apiCheck{{"v1-verdict", verdict(a.Status == http.StatusOK && saas.Message == ""), verdict(isSuccess(res.status))}} + } + + storedBefore := r.storedPolicy() + before := r.enforcedNow(t) + etagBefore := r.saasCurrentETag + + res := callHandler(r.v1, http.MethodPut, "/api/v1/policy", body) + + if label := a.RespHeader["ETag"]; label != "" { + r.saasCurrentETag = label + } + + if a.Kind == "policy" { + require.Truef(t, isSuccess(res.status), "%s: setup policy: %s", step.Name, res.body) + + return nil + } + + checks := []apiCheck{{"v1-verdict", verdict(a.Status/100 == 2), verdict(isSuccess(res.status))}} + + // SaaS's stored policy changed when the step's next read has a new ETag. + for _, next := range step.Actions[i+1:] { + if next.Method == http.MethodGet && next.RespHeader["ETag"] != "" { + checks = append(checks, apiCheck{ + "v1-stored", + changed(next.RespHeader["ETag"] != etagBefore), + changed(r.storedPolicy() != storedBefore), + }) + + break + } + } + + if ch, ok := r.enforcedCheck(t, step, a.Kind, before); ok { + checks = append(checks, ch) + } + + return checks +} + +func changed(c bool) string { + if c { + return "changed" + } + + return "unchanged" +} + +func (r *apiReplay) storedPolicy() string { + p, err := r.app.state.GetPolicy() + if err != nil { + return "" + } + + return p.Data +} diff --git a/hscontrol/servertest/apiv2_oauth_scopes_test.go b/hscontrol/servertest/apiv2_oauth_scopes_test.go index 8ac6173ac..62943b76d 100644 --- a/hscontrol/servertest/apiv2_oauth_scopes_test.go +++ b/hscontrol/servertest/apiv2_oauth_scopes_test.go @@ -1,7 +1,12 @@ package servertest_test import ( + "bytes" "context" + "encoding/json" + "io" + "net/http" + "net/url" "os" "os/exec" "path/filepath" @@ -11,6 +16,7 @@ import ( "github.com/juanfont/headscale/hscontrol/servertest" "github.com/juanfont/headscale/hscontrol/types" + "github.com/juanfont/headscale/hscontrol/types/testcapture" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" _ "tailscale.com/feature/oauthkey" @@ -608,3 +614,183 @@ func TestAPIv2OAuthTailscaleClientAuthKey(t *testing.T) { }) } } + +// TestAPIv2OAuthClientDeleteCompat replays, with real clients, SaaS's +// deletion of an OAuth client whose token made an auth key and a child +// client: one node joins with that key, the admin deletes the parent, a +// second node joins with the same key, and the child's tokens are used. Each +// call's status, each join's outcome, the joined nodes' tags and whether the +// two see each other must match SaaS. +// +// Test data source: testdata/steps/oauth.hujson, loaded by name. Its bodies +// are compared by TestAPIv2OAuthCompat in ../apiv2_compat_test.go. +func TestAPIv2OAuthClientDeleteCompat(t *testing.T) { + t.Parallel() + + c := readStepCapture(t, "oauth") + r := newStepReplay(t, c) + r.setPolicy(t, "setup", c.Input.FullPolicy) + + ids := map[string]string{} + secrets := map[string]string{} + tokens := map[string]string{} + + send := func(a testcapture.Action, header map[string]string, body []byte) (int, []byte) { + path := a.Path + for label, id := range ids { + path = strings.ReplaceAll(path, label, id) + } + + req, err := http.NewRequestWithContext(t.Context(), a.Method, r.srv.URL+"/api/v2"+path, bytes.NewReader(body)) + require.NoError(t, err) + + for k, v := range header { + req.Header.Set(k, v) + } + + bearer := r.apiKey + if a.Principal != "admin" { + bearer = tokens[a.Principal] + } + + req.Header.Set("Authorization", "Bearer "+bearer) + + resp, err := r.http.Do(req) + require.NoError(t, err) + + defer resp.Body.Close() + + out, err := io.ReadAll(resp.Body) + require.NoError(t, err) + + return resp.StatusCode, out + } + + mint := func(a testcapture.Action) (int, []byte) { + form := url.Values{"grant_type": {"client_credentials"}, "client_secret": {secrets[a.Client]}} + + req, err := http.NewRequestWithContext(t.Context(), http.MethodPost, + r.srv.URL+"/api/v2/oauth/token", strings.NewReader(form.Encode())) + require.NoError(t, err) + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + + resp, err := r.http.Do(req) + require.NoError(t, err) + + defer resp.Body.Close() + + out, err := io.ReadAll(resp.Body) + require.NoError(t, err) + + return resp.StatusCode, out + } + + replay := func(t *testing.T, step testcapture.Step, i int, a testcapture.Action) { + t.Helper() + + var ( + status int + body []byte + ) + + switch a.Kind { + case "token": + status, body = mint(a) + if status == http.StatusOK { + var tok struct { + AccessToken string `json:"access_token"` + } + require.NoError(t, json.Unmarshal(body, &tok)) + tokens[a.Principal] = tok.AccessToken + } + + case "api": + status, body = send(a, a.Header, a.Body) + if a.Method == http.MethodPost && status == http.StatusOK { + var created struct { + ID string `json:"id"` + Key string `json:"key"` + KeyType string `json:"keyType"` + } + require.NoError(t, json.Unmarshal(body, &created)) + + name, label := a.Key, "{key:"+a.Key+"}" + if created.KeyType == "client" { + name, label = a.Client, "{client:"+a.Client+"}" + } + + ids[label], secrets[name] = created.ID, created.Key + r.keys[name] = created.Key + } + + case "join": + refused := r.apply(t, testcapture.Step{Name: step.Name, Actions: []testcapture.Action{a}}) + require.Empty(t, refused, "%s: %s joins with %s", step.Name, a.Node, a.Key) + + cl := r.clients[a.Node] + ids["{device:"+a.Node+"}"] = r.node(t, a.Node).StringID() + + want := step.Captures[a.Node].Netmap.SelfNode.Tags().AsSlice() + + requireNetmapHolds(t, func(c require.TestingT) { + nm := cl.Netmap() + require.NotNil(c, nm) + require.Equal(c, want, nm.SelfNode.Tags().AsSlice(), "%s: self tags", a.Node) + }) + + return + + default: + t.Fatalf("%s: no replay for %q", step.Name, a.Kind) + } + + require.Equalf(t, a.Status, status, "%s/%d: %s %s: %s", step.Name, i, a.Method, a.Path, body) + } + + // The parent client is one of the admin's setup clients. + for _, step := range c.Steps { + if step.Name != "setup-clients" { + continue + } + + for i, a := range step.Actions { + if a.Client == "C-parent" { + replay(t, step, i, a) + } + } + } + + require.Contains(t, secrets, "C-parent") + + ran := 0 + + for _, step := range c.Steps { + if !strings.HasPrefix(step.Name, "B") { + continue + } + + ran++ + + for i, a := range step.Actions { + replay(t, step, i, a) + } + + // Each joined node sees the others SaaS showed it, among those + // replayed here. + for alias, n := range step.Captures { + var want []string + + for _, p := range n.Netmap.Peers { + if _, ok := r.clients[p.Hostinfo().Hostname()]; ok { + want = append(want, p.Hostinfo().Hostname()) + } + } + + requireNetmapHolds(t, func(c require.TestingT) { + require.ElementsMatch(c, want, r.clients[alias].PeerNames(), "%s: %s's peers", step.Name, alias) + }) + } + } + + require.Equal(t, 11, ran, "B1 to B11") +} diff --git a/hscontrol/servertest/testdata/steps/oauth.hujson b/hscontrol/servertest/testdata/steps/oauth.hujson new file mode 100644 index 000000000..0bf24e13a --- /dev/null +++ b/hscontrol/servertest/testdata/steps/oauth.hujson @@ -0,0 +1,9253 @@ +// oauth +// +// OAuth clients, tokens, auth keys and device tags through the admin API, by principal +// +// Steps: 70 +// Captured at: 2026-10-17T19:11:31Z +// tool version: saasprobe d9e736eeeaebe6f3a602199c026dd416c085c0e9 +// schema version: 1 +{ + "schema_version": 1, + "test_id": "oauth", + "description": "OAuth clients, tokens, auth keys and device tags through the admin API, by principal", + "captured_at": "2026-10-17T19:11:31.115150051Z", + "tool_version": "saasprobe d9e736eeeaebe6f3a602199c026dd416c085c0e9", + "client_version": "1.102.5-ERR-BuildInfo capver 142", + "tailnet": "odin@example.com", + "input": {"api_response_code": 0, "tailnet": {"dns": { + "magic_dns": false, + "nameservers": null, + "search_paths": null, + "split_dns": null + }, "settings": {}}, "scenario_hujson": "", "full_policy": {"tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"], + "tag:managed": ["tag:ci"] + }, "acls": [{"action": "accept", "src": ["*"], "dst": ["*:*"]}]}}, + "topology": {"users": [ + {"id": 1, "name": "odin", "email": "odin@example.com"}, + {"id": 2, "name": "thor", "email": "thor@example.org"}, + {"id": 3, "name": "freya", "email": "freya@example.com"} + ], "nodes": {"before": { + "hostname": "before", + "tags": ["tag:ci"], + "ipv4": "100.115.187.67", + "ipv6": "fd7a:115c:a1e0::328:bb44", + "routable_ips": [], + "approved_routes": [] + }, "ci-runner": { + "hostname": "ci-runner", + "tags": ["tag:ci"], + "ipv4": "100.122.9.101", + "ipv6": "fd7a:115c:a1e0::d628:966", + "routable_ips": [], + "approved_routes": [] + }, "joiner": { + "hostname": "joiner", + "tags": ["tag:ci"], + "ipv4": "100.93.253.10", + "ipv6": "fd7a:115c:a1e0::f28:fd0b", + "routable_ips": [], + "approved_routes": [] + }, "laptop": { + "hostname": "laptop", + "tags": [], + "ipv4": "100.92.45.78", + "ipv6": "fd7a:115c:a1e0::c728:2d4f", + "user": "odin", + "routable_ips": [], + "approved_routes": [] + }, "managed": { + "hostname": "managed", + "tags": ["tag:managed"], + "ipv4": "100.77.73.61", + "ipv6": "fd7a:115c:a1e0::28:493e", + "routable_ips": [], + "approved_routes": [] + }, "mixed": { + "hostname": "mixed", + "tags": ["tag:ci", "tag:prod"], + "ipv4": "100.81.212.117", + "ipv6": "fd7a:115c:a1e0::d628:d476", + "routable_ips": [], + "approved_routes": [] + }, "prod-db": { + "hostname": "prod-db", + "tags": ["tag:prod"], + "ipv4": "100.116.71.108", + "ipv6": "fd7a:115c:a1e0::8628:476d", + "routable_ips": [], + "approved_routes": [] + }, "router": { + "hostname": "router", + "tags": ["tag:router"], + "ipv4": "100.126.49.83", + "ipv6": "fd7a:115c:a1e0::f628:3154", + "routable_ips": ["10.42.0.0/16", "10.43.0.0/16"], + "approved_routes": [] + }}}, + "captures": null, + "node_ids": { + "before": 6358029555998068, + "ci-runner": 3341264727064639, + "joiner": 2456928377118214, + "laptop": 7507593642133957, + "managed": 2763643232453942, + "mixed": 8080604858439017, + "prod-db": 4873069762449992, + "router": 2300076859349604 + }, + "steps": [{ + "name": "setup-policy", + "at": "2026-10-17T19:11:31.115188478Z", + "result": "observed", + "actions": [{ + "kind": "policy", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": { + "acls": [{"action": "accept", "dst": ["*:*"], "src": ["*"]}], + "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + } + }, + "status": 200, + "resp_header": {"Content-Type": "application/hujson", "ETag": "{etag:1}"}, + "response": { + "acls": [{"action": "accept", "dst": ["*:*"], "src": ["*"]}], + "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + } + } + }] + }, { + "name": "setup-ci-runner", + "at": "2026-10-17T19:11:33.123421822Z", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "J-ci-runner", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:ci"] + }}}, "description": "tscap-saasprobe J-ci-runner", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:ci"] + }}}, + "created": "2026-10-17T19:11:35Z", + "description": "tscap-saasprobe J-ci-runner", + "expires": "2026-10-17T20:11:35Z", + "expirySeconds": 3600, + "id": "{key:J-ci-runner}", + "keyType": "auth", + "userId": "{unmatched:1}" + } + }, { + "kind": "join", + "node": "ci-runner", + "key": "J-ci-runner", + "request_tags": ["tag:ci"], + "hostname": "ci-runner", + "offset_ms": 2175 + }], + "register": {"ci-runner": [{ + "node_key": "{nodekey:1}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 1876 + }]} + }, { + "name": "setup-prod-db", + "at": "2026-10-17T19:11:35.840394985Z", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "J-prod-db", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:prod"] + }}}, "description": "tscap-saasprobe J-prod-db", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:prod"] + }}}, + "created": "2026-10-17T19:11:37Z", + "description": "tscap-saasprobe J-prod-db", + "expires": "2026-10-17T20:11:37Z", + "expirySeconds": 3600, + "id": "{key:J-prod-db}", + "keyType": "auth", + "userId": "{unmatched:1}" + } + }, { + "kind": "join", + "node": "prod-db", + "key": "J-prod-db", + "request_tags": ["tag:prod"], + "hostname": "prod-db", + "offset_ms": 1462 + }], + "register": {"prod-db": [{ + "node_key": "{nodekey:2}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 1159 + }]} + }, { + "name": "setup-mixed", + "at": "2026-10-17T19:11:37.836971768Z", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "J-mixed", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:ci", "tag:prod"] + }}}, "description": "tscap-saasprobe J-mixed", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:ci", "tag:prod"] + }}}, + "created": "2026-10-17T19:11:39Z", + "description": "tscap-saasprobe J-mixed", + "expires": "2026-10-17T20:11:39Z", + "expirySeconds": 3600, + "id": "{key:J-mixed}", + "keyType": "auth", + "userId": "{unmatched:1}" + } + }, { + "kind": "join", + "node": "mixed", + "key": "J-mixed", + "request_tags": ["tag:ci", "tag:prod"], + "hostname": "mixed", + "offset_ms": 1665 + }], + "register": {"mixed": [{ + "node_key": "{nodekey:3}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 1163 + }]} + }, { + "name": "setup-managed", + "at": "2026-10-17T19:11:40.29486503Z", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "J-managed", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:managed"] + }}}, "description": "tscap-saasprobe J-managed", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:managed"] + }}}, + "created": "2026-10-17T19:11:41Z", + "description": "tscap-saasprobe J-managed", + "expires": "2026-10-17T20:11:41Z", + "expirySeconds": 3600, + "id": "{key:J-managed}", + "keyType": "auth", + "userId": "{unmatched:1}" + } + }, { + "kind": "join", + "node": "managed", + "key": "J-managed", + "request_tags": ["tag:managed"], + "hostname": "managed", + "offset_ms": 1228 + }], + "register": {"managed": [{ + "node_key": "{nodekey:4}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 705 + }]} + }, { + "name": "setup-laptop", + "at": "2026-10-17T19:11:42.072191978Z", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "J-laptop", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": { + "create": {"ephemeral": false, "preauthorized": true, "reusable": false, "tags": null} + }}, "description": "tscap-saasprobe J-laptop", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": { + "devices": {"create": {"ephemeral": false, "preauthorized": true, "reusable": false}} + }, + "created": "2026-10-17T19:11:43Z", + "description": "tscap-saasprobe J-laptop", + "expires": "2026-10-17T20:11:43Z", + "expirySeconds": 3600, + "id": "{key:J-laptop}", + "keyType": "auth", + "userId": "{unmatched:1}" + } + }, { + "kind": "join", + "node": "laptop", + "key": "J-laptop", + "hostname": "laptop", + "offset_ms": 1463 + }], + "register": {"laptop": [{ + "node_key": "{nodekey:5}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 927 + }]} + }, { + "name": "setup-router", + "at": "2026-10-17T19:11:44.088515102Z", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "J-router", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:router"] + }}}, "description": "tscap-saasprobe J-router", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:router"] + }}}, + "created": "2026-10-17T19:11:45Z", + "description": "tscap-saasprobe J-router", + "expires": "2026-10-17T20:11:45Z", + "expirySeconds": 3600, + "id": "{key:J-router}", + "keyType": "auth", + "userId": "{unmatched:1}" + } + }, { + "kind": "join", + "node": "router", + "key": "J-router", + "request_tags": ["tag:router"], + "routes": ["10.42.0.0/16", "10.43.0.0/16"], + "hostname": "router", + "offset_ms": 1466 + }], + "register": {"router": [{ + "node_key": "{nodekey:6}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 911 + }]} + }, { + "name": "setup-routes", + "at": "2026-10-17T19:11:46.108173986Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/device/{device:router}/routes", + "header": {"Content-Type": "application/json"}, + "body": {"routes": ["10.42.0.0/16"]}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.42.0.0/16", "10.43.0.0/16"], + "enabledRoutes": ["10.42.0.0/16"] + } + }] + }, { + "name": "setup-clients", + "at": "2026-10-17T19:11:47.432413919Z", + "result": "observed", + "actions": [{ + "kind": "api", + "client": "C-all", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-all", + "keyType": "client", + "scopes": ["all"], + "tags": ["tag:ci"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:11:49Z", + "description": "tscap-saasprobe C-all", + "id": "{client:C-all}", + "keyType": "client", + "scopes": ["all"], + "tags": ["tag:ci"], + "userId": "{unmatched:1}" + } + }, { + "kind": "api", + "client": "C-core", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-core", + "keyType": "client", + "scopes": ["devices:core"], + "tags": ["tag:ci"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:11:51Z", + "description": "tscap-saasprobe C-core", + "id": "{client:C-core}", + "keyType": "client", + "scopes": ["devices:core"], + "tags": ["tag:ci"], + "userId": "{unmatched:1}" + }, + "offset_ms": 2017 + }, { + "kind": "api", + "client": "C-coreread", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-coreread", + "keyType": "client", + "scopes": ["devices:core:read"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:11:53Z", + "description": "tscap-saasprobe C-coreread", + "id": "{client:C-coreread}", + "keyType": "client", + "scopes": ["devices:core:read"], + "userId": "{unmatched:1}" + }, + "offset_ms": 4037 + }, { + "kind": "api", + "client": "C-routesread", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-routesread", + "keyType": "client", + "scopes": ["devices:routes:read"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:11:55Z", + "description": "tscap-saasprobe C-routesread", + "id": "{client:C-routesread}", + "keyType": "client", + "scopes": ["devices:routes:read"], + "userId": "{unmatched:1}" + }, + "offset_ms": 6056 + }, { + "kind": "api", + "client": "C-bothread", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-bothread", + "keyType": "client", + "scopes": ["devices:core:read", "devices:routes:read"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:11:58Z", + "description": "tscap-saasprobe C-bothread", + "id": "{client:C-bothread}", + "keyType": "client", + "scopes": ["devices:core:read", "devices:routes:read"], + "userId": "{unmatched:1}" + }, + "offset_ms": 8075 + }, { + "kind": "api", + "client": "C-ak", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-ak", + "keyType": "client", + "scopes": ["auth_keys"], + "tags": ["tag:ci"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:12:00Z", + "description": "tscap-saasprobe C-ak", + "id": "{client:C-ak}", + "keyType": "client", + "scopes": ["auth_keys"], + "tags": ["tag:ci"], + "userId": "{unmatched:1}" + }, + "offset_ms": 10094 + }, { + "kind": "api", + "client": "C-akread", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-akread", + "keyType": "client", + "scopes": ["auth_keys:read"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:12:02Z", + "description": "tscap-saasprobe C-akread", + "id": "{client:C-akread}", + "keyType": "client", + "scopes": ["auth_keys:read"], + "userId": "{unmatched:1}" + }, + "offset_ms": 12112 + }, { + "kind": "api", + "client": "C-ok", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-ok", + "keyType": "client", + "scopes": ["oauth_keys"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:12:04Z", + "description": "tscap-saasprobe C-ok", + "id": "{client:C-ok}", + "keyType": "client", + "scopes": ["oauth_keys"], + "userId": "{unmatched:1}" + }, + "offset_ms": 14131 + }, { + "kind": "api", + "client": "C-okread", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-okread", + "keyType": "client", + "scopes": ["oauth_keys:read"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:12:06Z", + "description": "tscap-saasprobe C-okread", + "id": "{client:C-okread}", + "keyType": "client", + "scopes": ["oauth_keys:read"], + "userId": "{unmatched:1}" + }, + "offset_ms": 16151 + }, { + "kind": "api", + "client": "C-parent", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-parent", + "keyType": "client", + "scopes": ["auth_keys", "oauth_keys"], + "tags": ["tag:ci"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:12:08Z", + "description": "tscap-saasprobe C-parent", + "id": "{client:C-parent}", + "keyType": "client", + "scopes": ["auth_keys", "oauth_keys"], + "tags": ["tag:ci"], + "userId": "{unmatched:1}" + }, + "offset_ms": 18170 + }, { + "kind": "api", + "client": "C-spare", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-spare", + "keyType": "client", + "scopes": ["all"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:12:10Z", + "description": "tscap-saasprobe C-spare", + "id": "{client:C-spare}", + "keyType": "client", + "scopes": ["all"], + "userId": "{unmatched:1}" + }, + "offset_ms": 20186 + }] + }, { + "name": "setup-keys", + "at": "2026-10-17T19:12:09.639471885Z", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "K-ci", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci"] + }}}, "description": "tscap-saasprobe K-ci", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci"] + }}}, + "created": "2026-10-17T19:12:12Z", + "description": "tscap-saasprobe K-ci", + "expires": "2026-10-17T20:12:12Z", + "expirySeconds": 3600, + "id": "{key:K-ci}", + "keyType": "auth", + "userId": "{unmatched:1}" + } + }, { + "kind": "api", + "key": "K-prod", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:prod"] + }}}, "description": "tscap-saasprobe K-prod", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:prod"] + }}}, + "created": "2026-10-17T19:12:14Z", + "description": "tscap-saasprobe K-prod", + "expires": "2026-10-17T20:12:14Z", + "expirySeconds": 3600, + "id": "{key:K-prod}", + "keyType": "auth", + "userId": "{unmatched:1}" + }, + "offset_ms": 2017 + }, { + "kind": "api", + "key": "K-mixed", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci", "tag:prod"] + }}}, "description": "tscap-saasprobe K-mixed", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci", "tag:prod"] + }}}, + "created": "2026-10-17T19:12:16Z", + "description": "tscap-saasprobe K-mixed", + "expires": "2026-10-17T20:12:16Z", + "expirySeconds": 3600, + "id": "{key:K-mixed}", + "keyType": "auth", + "userId": "{unmatched:1}" + }, + "offset_ms": 4036 + }, { + "kind": "api", + "key": "K-user", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": { + "create": {"ephemeral": false, "preauthorized": true, "reusable": true, "tags": null} + }}, "description": "tscap-saasprobe K-user", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": { + "devices": {"create": {"ephemeral": false, "preauthorized": true, "reusable": true}} + }, + "created": "2026-10-17T19:12:18Z", + "description": "tscap-saasprobe K-user", + "expires": "2026-10-17T20:12:18Z", + "expirySeconds": 3600, + "id": "{key:K-user}", + "keyType": "auth", + "userId": "{unmatched:1}" + }, + "offset_ms": 6057 + }] + }, { + "name": "setup-token", + "at": "2026-10-17T19:12:17.715858578Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-spare", + "principal": "token:C-spare", + "status": 200, + "response": {"expires_in": 3600, "scope": "all", "token_type": "Bearer"} + }] + }, { + "name": "R1", + "at": "2026-10-17T19:12:19.734469214Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:router}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.126.49.83", "fd7a:115c:a1e0::f628:3154"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:46Z", + "expires": "2027-04-15T19:11:46Z", + "hostname": "router", + "id": "{device:router}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:20Z", + "machineKey": "{machine:router}", + "name": "router.tail78f774.ts.net", + "nodeId": "{device:router}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:J-router}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:03f6ecfd81c7163982c03b2be5251b03f00a4ee9300f1c6f327fa79e6cce89e4", + "updateAvailable": true, + "user": "odin@example.com" + } + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:router}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.126.49.83", "fd7a:115c:a1e0::f628:3154"], + "advertisedRoutes": ["10.42.0.0/16", "10.43.0.0/16"], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:41850", + "192.0.2.1:41850", + "198.51.100.2:41850", + "198.51.100.3:41850" + ], "latency": { + "Amsterdam": {"latencyMs": 12.121974, "preferred": true}, + "Ashburn": {"latencyMs": 92.49579800000001}, + "Bengaluru": {"latencyMs": 223.049729}, + "Chicago": {"latencyMs": 112.473843}, + "Dallas": {"latencyMs": 127.611117}, + "Denver": {"latencyMs": 138.74304700000002}, + "Dubai": {"latencyMs": 115.542879}, + "Frankfurt": {"latencyMs": 17.848171999999998}, + "Helsinki": {"latencyMs": 36.803263}, + "Hong Kong": {"latencyMs": 195.498962}, + "Honolulu": {"latencyMs": 197.858413}, + "Johannesburg": {"latencyMs": 202.611659}, + "London": {"latencyMs": 16.848427}, + "Los Angeles": {"latencyMs": 144.078965}, + "Madrid": {"latencyMs": 34.569279}, + "Miami": {"latencyMs": 120.192127}, + "Nairobi": {"latencyMs": 163.150029}, + "New York City": {"latencyMs": 91.777961}, + "Nuremberg": {"latencyMs": 25.529985}, + "Paris": {"latencyMs": 20.022621}, + "San Francisco": {"latencyMs": 151.626689}, + "Seattle": {"latencyMs": 146.41589199999999}, + "Singapore": {"latencyMs": 166.088443}, + "Tokyo": {"latencyMs": 246.742227}, + "Toronto": {"latencyMs": 119.959132}, + "Warsaw": {"latencyMs": 26.754834000000002} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:46Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": ["10.42.0.0/16"], + "expires": "2027-04-15T19:11:46Z", + "hostname": "router", + "id": "{device:router}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:20Z", + "machineKey": "{machine:router}", + "name": "router.tail78f774.ts.net", + "nodeId": "{device:router}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:J-router}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:03f6ecfd81c7163982c03b2be5251b03f00a4ee9300f1c6f327fa79e6cce89e4", + "updateAvailable": true, + "user": "odin@example.com" + }, + "offset_ms": 16 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/devices?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"devices": [{ + "addresses": ["100.122.9.101", "fd7a:115c:a1e0::d628:966"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:35808", + "192.0.2.1:35808", + "198.51.100.2:35808", + "198.51.100.3:35808" + ], "latency": { + "Amsterdam": {"latencyMs": 10.266454, "preferred": true}, + "Ashburn": {"latencyMs": 92.581656}, + "Bengaluru": {"latencyMs": 137.984551}, + "Chicago": {"latencyMs": 113.018518}, + "Dallas": {"latencyMs": 123.37870500000001}, + "Denver": {"latencyMs": 137.075862}, + "Dubai": {"latencyMs": 117.316326}, + "Frankfurt": {"latencyMs": 16.488429999999997}, + "Helsinki": {"latencyMs": 37.343756}, + "Hong Kong": {"latencyMs": 194.99831700000001}, + "Honolulu": {"latencyMs": 199.493277}, + "Johannesburg": {"latencyMs": 191.756567}, + "London": {"latencyMs": 16.520744}, + "Los Angeles": {"latencyMs": 143.220516}, + "Madrid": {"latencyMs": 32.898115999999995}, + "Miami": {"latencyMs": 119.222487}, + "Nairobi": {"latencyMs": 161.311658}, + "New York City": {"latencyMs": 86.312164}, + "Nuremberg": {"latencyMs": 25.476104}, + "Paris": {"latencyMs": 17.609609}, + "San Francisco": {"latencyMs": 151.56289}, + "Seattle": {"latencyMs": 146.214167}, + "Singapore": {"latencyMs": 166.590768}, + "Tokyo": {"latencyMs": 244.39915100000002}, + "Toronto": {"latencyMs": 119.302391}, + "Warsaw": {"latencyMs": 28.606751} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:35Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:35Z", + "hostname": "ci-runner", + "id": "{device:ci-runner}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:20Z", + "machineKey": "{machine:ci-runner}", + "name": "ci-runner.tail78f774.ts.net", + "nodeId": "{device:ci-runner}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:J-ci-runner}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:01cd85d3485f25e43e152855ec93ae76b56f9656ba54dab7d4ffe4c82ecf10cc", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.92.45.78", "fd7a:115c:a1e0::c728:2d4f"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:56751", + "192.0.2.1:56751", + "198.51.100.2:56751", + "198.51.100.3:56751" + ], "latency": { + "Amsterdam": {"latencyMs": 11.845241, "preferred": true}, + "Ashburn": {"latencyMs": 90.23803099999999}, + "Bengaluru": {"latencyMs": 213.357249}, + "Chicago": {"latencyMs": 111.021219}, + "Dallas": {"latencyMs": 126.10964899999999}, + "Denver": {"latencyMs": 137.747173}, + "Dubai": {"latencyMs": 116.26565699999999}, + "Frankfurt": {"latencyMs": 17.212332}, + "Helsinki": {"latencyMs": 36.390555}, + "Hong Kong": {"latencyMs": 195.078359}, + "Honolulu": {"latencyMs": 217.987536}, + "Johannesburg": {"latencyMs": 175.97738600000002}, + "London": {"latencyMs": 16.050832}, + "Los Angeles": {"latencyMs": 143.354849}, + "Madrid": {"latencyMs": 32.579556000000004}, + "Miami": {"latencyMs": 116.540298}, + "Nairobi": {"latencyMs": 161.03943}, + "New York City": {"latencyMs": 89.58474600000001}, + "Nuremberg": {"latencyMs": 26.428724}, + "Paris": {"latencyMs": 18.648634}, + "San Francisco": {"latencyMs": 149.201699}, + "Seattle": {"latencyMs": 147.72831}, + "Singapore": {"latencyMs": 181.545976}, + "Tokyo": {"latencyMs": 233.187819}, + "Toronto": {"latencyMs": 119.212352}, + "Warsaw": {"latencyMs": 28.524252999999998} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:44Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:44Z", + "hostname": "laptop", + "id": "{device:laptop}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-17T19:12:20Z", + "machineKey": "{machine:laptop}", + "name": "laptop.tail78f774.ts.net", + "nodeId": "{device:laptop}", + "nodeKey": "{nodekey:5}", + "oauthClientId": "{key:J-laptop}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tailnetLockError": "", + "tailnetLockKey": "nlpub:a62f8250a62bf17095189ebf24c4616c8a5a7a30b2b5c38e622f45f03657d0ca", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.77.73.61", "fd7a:115c:a1e0::28:493e"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:59663", + "192.0.2.1:59663", + "198.51.100.2:59663", + "198.51.100.3:59663" + ], "latency": { + "Amsterdam": {"latencyMs": 13.965559, "preferred": true}, + "Ashburn": {"latencyMs": 94.127739}, + "Bengaluru": {"latencyMs": 138.34985799999998}, + "Chicago": {"latencyMs": 113.006907}, + "Dallas": {"latencyMs": 126.38182}, + "Denver": {"latencyMs": 135.45923000000002}, + "Dubai": {"latencyMs": 116.222156}, + "Frankfurt": {"latencyMs": 17.592974}, + "Helsinki": {"latencyMs": 36.431022}, + "Hong Kong": {"latencyMs": 195.586638}, + "Honolulu": {"latencyMs": 220.76305299999999}, + "Johannesburg": {"latencyMs": 208.210431}, + "London": {"latencyMs": 16.463158}, + "Los Angeles": {"latencyMs": 144.57808}, + "Madrid": {"latencyMs": 34.533197}, + "Miami": {"latencyMs": 119.98886}, + "Nairobi": {"latencyMs": 174.307404}, + "New York City": {"latencyMs": 88.554272}, + "Nuremberg": {"latencyMs": 23.252912000000002}, + "Paris": {"latencyMs": 19.625595}, + "San Francisco": {"latencyMs": 151.129391}, + "Seattle": {"latencyMs": 147.061526}, + "Singapore": {"latencyMs": 173.424376}, + "Tokyo": {"latencyMs": 236.53889}, + "Toronto": {"latencyMs": 119.521553}, + "Warsaw": {"latencyMs": 28.692609} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:42Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:42Z", + "hostname": "managed", + "id": "{device:managed}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:20Z", + "machineKey": "{machine:managed}", + "name": "managed.tail78f774.ts.net", + "nodeId": "{device:managed}", + "nodeKey": "{nodekey:4}", + "oauthClientId": "{key:J-managed}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:managed"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:dc81cecc1b327b3f48471c4cdc9513c8388d7feabc734fbeedf63e3eb199b746", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.81.212.117", "fd7a:115c:a1e0::d628:d476"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:48635", + "192.0.2.1:48635", + "198.51.100.2:48635", + "198.51.100.3:48635" + ], "latency": { + "Amsterdam": {"latencyMs": 18.068428, "preferred": true}, + "Ashburn": {"latencyMs": 96.19809599999999}, + "Bengaluru": {"latencyMs": 149.507434}, + "Chicago": {"latencyMs": 114.13907900000001}, + "Dallas": {"latencyMs": 124.923851}, + "Denver": {"latencyMs": 137.865181}, + "Dubai": {"latencyMs": 118.653979}, + "Frankfurt": {"latencyMs": 19.332169999999998}, + "Helsinki": {"latencyMs": 35.860916}, + "Hong Kong": {"latencyMs": 205.890913}, + "Honolulu": {"latencyMs": 210.567951}, + "Johannesburg": {"latencyMs": 177.31955699999997}, + "London": {"latencyMs": 19.720675}, + "Los Angeles": {"latencyMs": 147.24026700000002}, + "Madrid": {"latencyMs": 34.874328000000006}, + "Miami": {"latencyMs": 118.868635}, + "Nairobi": {"latencyMs": 167.794918}, + "New York City": {"latencyMs": 90.916794}, + "Nuremberg": {"latencyMs": 26.556009}, + "Paris": {"latencyMs": 19.928114}, + "San Francisco": {"latencyMs": 150.087885}, + "Seattle": {"latencyMs": 146.148653}, + "Singapore": {"latencyMs": 174.201584}, + "Tokyo": {"latencyMs": 233.36791000000002}, + "Toronto": {"latencyMs": 120.936096}, + "Warsaw": {"latencyMs": 27.077673} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:40Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:40Z", + "hostname": "mixed", + "id": "{device:mixed}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:20Z", + "machineKey": "{machine:mixed}", + "name": "mixed.tail78f774.ts.net", + "nodeId": "{device:mixed}", + "nodeKey": "{nodekey:3}", + "oauthClientId": "{key:J-mixed}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci", "tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:1c880990870d2389000522ed85d8ada7f750867ba3d7bf2dfb7f337b4a76c5f4", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.116.71.108", "fd7a:115c:a1e0::8628:476d"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:34401", + "192.0.2.1:34401", + "198.51.100.2:34401", + "198.51.100.3:34401" + ], "latency": { + "Amsterdam": {"latencyMs": 10.937355, "preferred": true}, + "Ashburn": {"latencyMs": 96.26371}, + "Bengaluru": {"latencyMs": 145.96633}, + "Chicago": {"latencyMs": 112.53933400000001}, + "Dallas": {"latencyMs": 126.007017}, + "Denver": {"latencyMs": 138.493898}, + "Dubai": {"latencyMs": 115.479823}, + "Frankfurt": {"latencyMs": 16.107264}, + "Helsinki": {"latencyMs": 35.993153}, + "Hong Kong": {"latencyMs": 195.877514}, + "Honolulu": {"latencyMs": 205.064617}, + "Johannesburg": {"latencyMs": 172.651014}, + "London": {"latencyMs": 16.483313}, + "Los Angeles": {"latencyMs": 143.15759}, + "Madrid": {"latencyMs": 34.155393}, + "Miami": {"latencyMs": 117.436712}, + "Nairobi": {"latencyMs": 174.443672}, + "New York City": {"latencyMs": 88.222555}, + "Nuremberg": {"latencyMs": 25.788553}, + "Paris": {"latencyMs": 19.076505}, + "San Francisco": {"latencyMs": 150.29126000000002}, + "Seattle": {"latencyMs": 146.45190399999998}, + "Singapore": {"latencyMs": 165.902536}, + "Tokyo": {"latencyMs": 236.455097}, + "Toronto": {"latencyMs": 118.691958}, + "Warsaw": {"latencyMs": 27.970101} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:37Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:37Z", + "hostname": "prod-db", + "id": "{device:prod-db}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:20Z", + "machineKey": "{machine:prod-db}", + "name": "prod-db.tail78f774.ts.net", + "nodeId": "{device:prod-db}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:J-prod-db}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:55acf0519cbbc4d30dae8b1365637d412e3598542a71e4d6cc0cd10df6e3264e", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.126.49.83", "fd7a:115c:a1e0::f628:3154"], + "advertisedRoutes": ["10.42.0.0/16", "10.43.0.0/16"], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:41850", + "192.0.2.1:41850", + "198.51.100.2:41850", + "198.51.100.3:41850" + ], "latency": { + "Amsterdam": {"latencyMs": 12.121974, "preferred": true}, + "Ashburn": {"latencyMs": 92.49579800000001}, + "Bengaluru": {"latencyMs": 223.049729}, + "Chicago": {"latencyMs": 112.473843}, + "Dallas": {"latencyMs": 127.611117}, + "Denver": {"latencyMs": 138.74304700000002}, + "Dubai": {"latencyMs": 115.542879}, + "Frankfurt": {"latencyMs": 17.848171999999998}, + "Helsinki": {"latencyMs": 36.803263}, + "Hong Kong": {"latencyMs": 195.498962}, + "Honolulu": {"latencyMs": 197.858413}, + "Johannesburg": {"latencyMs": 202.611659}, + "London": {"latencyMs": 16.848427}, + "Los Angeles": {"latencyMs": 144.078965}, + "Madrid": {"latencyMs": 34.569279}, + "Miami": {"latencyMs": 120.192127}, + "Nairobi": {"latencyMs": 163.150029}, + "New York City": {"latencyMs": 91.777961}, + "Nuremberg": {"latencyMs": 25.529985}, + "Paris": {"latencyMs": 20.022621}, + "San Francisco": {"latencyMs": 151.626689}, + "Seattle": {"latencyMs": 146.41589199999999}, + "Singapore": {"latencyMs": 166.088443}, + "Tokyo": {"latencyMs": 246.742227}, + "Toronto": {"latencyMs": 119.959132}, + "Warsaw": {"latencyMs": 26.754834000000002} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:46Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": ["10.42.0.0/16"], + "expires": "2027-04-15T19:11:46Z", + "hostname": "router", + "id": "{device:router}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:20Z", + "machineKey": "{machine:router}", + "name": "router.tail78f774.ts.net", + "nodeId": "{device:router}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:J-router}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:03f6ecfd81c7163982c03b2be5251b03f00a4ee9300f1c6f327fa79e6cce89e4", + "updateAvailable": true, + "user": "odin@example.com" + }]}, + "offset_ms": 33 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:router}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.42.0.0/16", "10.43.0.0/16"], + "enabledRoutes": ["10.42.0.0/16"] + }, + "offset_ms": 65 + }] + }, { + "name": "R2", + "at": "2026-10-17T19:12:19.815954406Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-coreread", + "principal": "token:C-coreread", + "status": 200, + "response": {"expires_in": 3600, "scope": "devices:core:read", "token_type": "Bearer"} + }, { + "kind": "api", + "principal": "token:C-coreread", + "method": "GET", + "path": "/device/{device:router}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.126.49.83", "fd7a:115c:a1e0::f628:3154"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:46Z", + "expires": "2027-04-15T19:11:46Z", + "hostname": "router", + "id": "{device:router}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:22Z", + "machineKey": "{machine:router}", + "name": "router.tail78f774.ts.net", + "nodeId": "{device:router}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:J-router}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:03f6ecfd81c7163982c03b2be5251b03f00a4ee9300f1c6f327fa79e6cce89e4", + "updateAvailable": true, + "user": "odin@example.com" + }, + "offset_ms": 1937 + }, { + "kind": "api", + "principal": "token:C-coreread", + "method": "GET", + "path": "/device/{device:router}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.126.49.83", "fd7a:115c:a1e0::f628:3154"], + "advertisedRoutes": ["10.42.0.0/16", "10.43.0.0/16"], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:41850", + "192.0.2.1:41850", + "198.51.100.2:41850", + "198.51.100.3:41850" + ], "latency": { + "Amsterdam": {"latencyMs": 12.121974, "preferred": true}, + "Ashburn": {"latencyMs": 92.49579800000001}, + "Bengaluru": {"latencyMs": 223.049729}, + "Chicago": {"latencyMs": 112.473843}, + "Dallas": {"latencyMs": 127.611117}, + "Denver": {"latencyMs": 138.74304700000002}, + "Dubai": {"latencyMs": 115.542879}, + "Frankfurt": {"latencyMs": 17.848171999999998}, + "Helsinki": {"latencyMs": 36.803263}, + "Hong Kong": {"latencyMs": 195.498962}, + "Honolulu": {"latencyMs": 197.858413}, + "Johannesburg": {"latencyMs": 202.611659}, + "London": {"latencyMs": 16.848427}, + "Los Angeles": {"latencyMs": 144.078965}, + "Madrid": {"latencyMs": 34.569279}, + "Miami": {"latencyMs": 120.192127}, + "Nairobi": {"latencyMs": 163.150029}, + "New York City": {"latencyMs": 91.777961}, + "Nuremberg": {"latencyMs": 25.529985}, + "Paris": {"latencyMs": 20.022621}, + "San Francisco": {"latencyMs": 151.626689}, + "Seattle": {"latencyMs": 146.41589199999999}, + "Singapore": {"latencyMs": 166.088443}, + "Tokyo": {"latencyMs": 246.742227}, + "Toronto": {"latencyMs": 119.959132}, + "Warsaw": {"latencyMs": 26.754834000000002} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:46Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": ["10.42.0.0/16"], + "expires": "2027-04-15T19:11:46Z", + "hostname": "router", + "id": "{device:router}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:22Z", + "machineKey": "{machine:router}", + "name": "router.tail78f774.ts.net", + "nodeId": "{device:router}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:J-router}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:03f6ecfd81c7163982c03b2be5251b03f00a4ee9300f1c6f327fa79e6cce89e4", + "updateAvailable": true, + "user": "odin@example.com" + }, + "offset_ms": 1953 + }, { + "kind": "api", + "principal": "token:C-coreread", + "method": "GET", + "path": "/tailnet/-/devices?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"devices": [{ + "addresses": ["100.122.9.101", "fd7a:115c:a1e0::d628:966"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:35808", + "192.0.2.1:35808", + "198.51.100.2:35808", + "198.51.100.3:35808" + ], "latency": { + "Amsterdam": {"latencyMs": 10.266454, "preferred": true}, + "Ashburn": {"latencyMs": 92.581656}, + "Bengaluru": {"latencyMs": 137.984551}, + "Chicago": {"latencyMs": 113.018518}, + "Dallas": {"latencyMs": 123.37870500000001}, + "Denver": {"latencyMs": 137.075862}, + "Dubai": {"latencyMs": 117.316326}, + "Frankfurt": {"latencyMs": 16.488429999999997}, + "Helsinki": {"latencyMs": 37.343756}, + "Hong Kong": {"latencyMs": 194.99831700000001}, + "Honolulu": {"latencyMs": 199.493277}, + "Johannesburg": {"latencyMs": 191.756567}, + "London": {"latencyMs": 16.520744}, + "Los Angeles": {"latencyMs": 143.220516}, + "Madrid": {"latencyMs": 32.898115999999995}, + "Miami": {"latencyMs": 119.222487}, + "Nairobi": {"latencyMs": 161.311658}, + "New York City": {"latencyMs": 86.312164}, + "Nuremberg": {"latencyMs": 25.476104}, + "Paris": {"latencyMs": 17.609609}, + "San Francisco": {"latencyMs": 151.56289}, + "Seattle": {"latencyMs": 146.214167}, + "Singapore": {"latencyMs": 166.590768}, + "Tokyo": {"latencyMs": 244.39915100000002}, + "Toronto": {"latencyMs": 119.302391}, + "Warsaw": {"latencyMs": 28.606751} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:35Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:35Z", + "hostname": "ci-runner", + "id": "{device:ci-runner}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:22Z", + "machineKey": "{machine:ci-runner}", + "name": "ci-runner.tail78f774.ts.net", + "nodeId": "{device:ci-runner}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:J-ci-runner}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:01cd85d3485f25e43e152855ec93ae76b56f9656ba54dab7d4ffe4c82ecf10cc", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.92.45.78", "fd7a:115c:a1e0::c728:2d4f"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:56751", + "192.0.2.1:56751", + "198.51.100.2:56751", + "198.51.100.3:56751" + ], "latency": { + "Amsterdam": {"latencyMs": 11.845241, "preferred": true}, + "Ashburn": {"latencyMs": 90.23803099999999}, + "Bengaluru": {"latencyMs": 213.357249}, + "Chicago": {"latencyMs": 111.021219}, + "Dallas": {"latencyMs": 126.10964899999999}, + "Denver": {"latencyMs": 137.747173}, + "Dubai": {"latencyMs": 116.26565699999999}, + "Frankfurt": {"latencyMs": 17.212332}, + "Helsinki": {"latencyMs": 36.390555}, + "Hong Kong": {"latencyMs": 195.078359}, + "Honolulu": {"latencyMs": 217.987536}, + "Johannesburg": {"latencyMs": 175.97738600000002}, + "London": {"latencyMs": 16.050832}, + "Los Angeles": {"latencyMs": 143.354849}, + "Madrid": {"latencyMs": 32.579556000000004}, + "Miami": {"latencyMs": 116.540298}, + "Nairobi": {"latencyMs": 161.03943}, + "New York City": {"latencyMs": 89.58474600000001}, + "Nuremberg": {"latencyMs": 26.428724}, + "Paris": {"latencyMs": 18.648634}, + "San Francisco": {"latencyMs": 149.201699}, + "Seattle": {"latencyMs": 147.72831}, + "Singapore": {"latencyMs": 181.545976}, + "Tokyo": {"latencyMs": 233.187819}, + "Toronto": {"latencyMs": 119.212352}, + "Warsaw": {"latencyMs": 28.524252999999998} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:44Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:44Z", + "hostname": "laptop", + "id": "{device:laptop}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-17T19:12:22Z", + "machineKey": "{machine:laptop}", + "name": "laptop.tail78f774.ts.net", + "nodeId": "{device:laptop}", + "nodeKey": "{nodekey:5}", + "oauthClientId": "{key:J-laptop}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tailnetLockError": "", + "tailnetLockKey": "nlpub:a62f8250a62bf17095189ebf24c4616c8a5a7a30b2b5c38e622f45f03657d0ca", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.77.73.61", "fd7a:115c:a1e0::28:493e"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:59663", + "192.0.2.1:59663", + "198.51.100.2:59663", + "198.51.100.3:59663" + ], "latency": { + "Amsterdam": {"latencyMs": 13.965559, "preferred": true}, + "Ashburn": {"latencyMs": 94.127739}, + "Bengaluru": {"latencyMs": 138.34985799999998}, + "Chicago": {"latencyMs": 113.006907}, + "Dallas": {"latencyMs": 126.38182}, + "Denver": {"latencyMs": 135.45923000000002}, + "Dubai": {"latencyMs": 116.222156}, + "Frankfurt": {"latencyMs": 17.592974}, + "Helsinki": {"latencyMs": 36.431022}, + "Hong Kong": {"latencyMs": 195.586638}, + "Honolulu": {"latencyMs": 220.76305299999999}, + "Johannesburg": {"latencyMs": 208.210431}, + "London": {"latencyMs": 16.463158}, + "Los Angeles": {"latencyMs": 144.57808}, + "Madrid": {"latencyMs": 34.533197}, + "Miami": {"latencyMs": 119.98886}, + "Nairobi": {"latencyMs": 174.307404}, + "New York City": {"latencyMs": 88.554272}, + "Nuremberg": {"latencyMs": 23.252912000000002}, + "Paris": {"latencyMs": 19.625595}, + "San Francisco": {"latencyMs": 151.129391}, + "Seattle": {"latencyMs": 147.061526}, + "Singapore": {"latencyMs": 173.424376}, + "Tokyo": {"latencyMs": 236.53889}, + "Toronto": {"latencyMs": 119.521553}, + "Warsaw": {"latencyMs": 28.692609} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:42Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:42Z", + "hostname": "managed", + "id": "{device:managed}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:22Z", + "machineKey": "{machine:managed}", + "name": "managed.tail78f774.ts.net", + "nodeId": "{device:managed}", + "nodeKey": "{nodekey:4}", + "oauthClientId": "{key:J-managed}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:managed"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:dc81cecc1b327b3f48471c4cdc9513c8388d7feabc734fbeedf63e3eb199b746", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.81.212.117", "fd7a:115c:a1e0::d628:d476"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:48635", + "192.0.2.1:48635", + "198.51.100.2:48635", + "198.51.100.3:48635" + ], "latency": { + "Amsterdam": {"latencyMs": 18.068428, "preferred": true}, + "Ashburn": {"latencyMs": 96.19809599999999}, + "Bengaluru": {"latencyMs": 149.507434}, + "Chicago": {"latencyMs": 114.13907900000001}, + "Dallas": {"latencyMs": 124.923851}, + "Denver": {"latencyMs": 137.865181}, + "Dubai": {"latencyMs": 118.653979}, + "Frankfurt": {"latencyMs": 19.332169999999998}, + "Helsinki": {"latencyMs": 35.860916}, + "Hong Kong": {"latencyMs": 205.890913}, + "Honolulu": {"latencyMs": 210.567951}, + "Johannesburg": {"latencyMs": 177.31955699999997}, + "London": {"latencyMs": 19.720675}, + "Los Angeles": {"latencyMs": 147.24026700000002}, + "Madrid": {"latencyMs": 34.874328000000006}, + "Miami": {"latencyMs": 118.868635}, + "Nairobi": {"latencyMs": 167.794918}, + "New York City": {"latencyMs": 90.916794}, + "Nuremberg": {"latencyMs": 26.556009}, + "Paris": {"latencyMs": 19.928114}, + "San Francisco": {"latencyMs": 150.087885}, + "Seattle": {"latencyMs": 146.148653}, + "Singapore": {"latencyMs": 174.201584}, + "Tokyo": {"latencyMs": 233.36791000000002}, + "Toronto": {"latencyMs": 120.936096}, + "Warsaw": {"latencyMs": 27.077673} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:40Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:40Z", + "hostname": "mixed", + "id": "{device:mixed}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:22Z", + "machineKey": "{machine:mixed}", + "name": "mixed.tail78f774.ts.net", + "nodeId": "{device:mixed}", + "nodeKey": "{nodekey:3}", + "oauthClientId": "{key:J-mixed}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci", "tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:1c880990870d2389000522ed85d8ada7f750867ba3d7bf2dfb7f337b4a76c5f4", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.116.71.108", "fd7a:115c:a1e0::8628:476d"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:34401", + "192.0.2.1:34401", + "198.51.100.2:34401", + "198.51.100.3:34401" + ], "latency": { + "Amsterdam": {"latencyMs": 10.937355, "preferred": true}, + "Ashburn": {"latencyMs": 96.26371}, + "Bengaluru": {"latencyMs": 145.96633}, + "Chicago": {"latencyMs": 112.53933400000001}, + "Dallas": {"latencyMs": 126.007017}, + "Denver": {"latencyMs": 138.493898}, + "Dubai": {"latencyMs": 115.479823}, + "Frankfurt": {"latencyMs": 16.107264}, + "Helsinki": {"latencyMs": 35.993153}, + "Hong Kong": {"latencyMs": 195.877514}, + "Honolulu": {"latencyMs": 205.064617}, + "Johannesburg": {"latencyMs": 172.651014}, + "London": {"latencyMs": 16.483313}, + "Los Angeles": {"latencyMs": 143.15759}, + "Madrid": {"latencyMs": 34.155393}, + "Miami": {"latencyMs": 117.436712}, + "Nairobi": {"latencyMs": 174.443672}, + "New York City": {"latencyMs": 88.222555}, + "Nuremberg": {"latencyMs": 25.788553}, + "Paris": {"latencyMs": 19.076505}, + "San Francisco": {"latencyMs": 150.29126000000002}, + "Seattle": {"latencyMs": 146.45190399999998}, + "Singapore": {"latencyMs": 165.902536}, + "Tokyo": {"latencyMs": 236.455097}, + "Toronto": {"latencyMs": 118.691958}, + "Warsaw": {"latencyMs": 27.970101} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:37Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:37Z", + "hostname": "prod-db", + "id": "{device:prod-db}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:22Z", + "machineKey": "{machine:prod-db}", + "name": "prod-db.tail78f774.ts.net", + "nodeId": "{device:prod-db}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:J-prod-db}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:55acf0519cbbc4d30dae8b1365637d412e3598542a71e4d6cc0cd10df6e3264e", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.126.49.83", "fd7a:115c:a1e0::f628:3154"], + "advertisedRoutes": ["10.42.0.0/16", "10.43.0.0/16"], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:41850", + "192.0.2.1:41850", + "198.51.100.2:41850", + "198.51.100.3:41850" + ], "latency": { + "Amsterdam": {"latencyMs": 12.121974, "preferred": true}, + "Ashburn": {"latencyMs": 92.49579800000001}, + "Bengaluru": {"latencyMs": 223.049729}, + "Chicago": {"latencyMs": 112.473843}, + "Dallas": {"latencyMs": 127.611117}, + "Denver": {"latencyMs": 138.74304700000002}, + "Dubai": {"latencyMs": 115.542879}, + "Frankfurt": {"latencyMs": 17.848171999999998}, + "Helsinki": {"latencyMs": 36.803263}, + "Hong Kong": {"latencyMs": 195.498962}, + "Honolulu": {"latencyMs": 197.858413}, + "Johannesburg": {"latencyMs": 202.611659}, + "London": {"latencyMs": 16.848427}, + "Los Angeles": {"latencyMs": 144.078965}, + "Madrid": {"latencyMs": 34.569279}, + "Miami": {"latencyMs": 120.192127}, + "Nairobi": {"latencyMs": 163.150029}, + "New York City": {"latencyMs": 91.777961}, + "Nuremberg": {"latencyMs": 25.529985}, + "Paris": {"latencyMs": 20.022621}, + "San Francisco": {"latencyMs": 151.626689}, + "Seattle": {"latencyMs": 146.41589199999999}, + "Singapore": {"latencyMs": 166.088443}, + "Tokyo": {"latencyMs": 246.742227}, + "Toronto": {"latencyMs": 119.959132}, + "Warsaw": {"latencyMs": 26.754834000000002} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:46Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": ["10.42.0.0/16"], + "expires": "2027-04-15T19:11:46Z", + "hostname": "router", + "id": "{device:router}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:22Z", + "machineKey": "{machine:router}", + "name": "router.tail78f774.ts.net", + "nodeId": "{device:router}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:J-router}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:03f6ecfd81c7163982c03b2be5251b03f00a4ee9300f1c6f327fa79e6cce89e4", + "updateAvailable": true, + "user": "odin@example.com" + }]}, + "offset_ms": 1970 + }, { + "kind": "api", + "principal": "token:C-coreread", + "method": "GET", + "path": "/device/{device:router}/routes", + "status": 404, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "not found"}, + "offset_ms": 2004 + }] + }, { + "name": "R3", + "at": "2026-10-17T19:12:21.836756088Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-routesread", + "principal": "token:C-routesread", + "status": 200, + "response": {"expires_in": 3600, "scope": "devices:routes:read", "token_type": "Bearer"} + }, { + "kind": "api", + "principal": "token:C-routesread", + "method": "GET", + "path": "/device/{device:router}", + "status": 404, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "not found"}, + "offset_ms": 1934 + }, { + "kind": "api", + "principal": "token:C-routesread", + "method": "GET", + "path": "/device/{device:router}?fields=all", + "status": 404, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "not found"}, + "offset_ms": 1951 + }, { + "kind": "api", + "principal": "token:C-routesread", + "method": "GET", + "path": "/tailnet/-/devices?fields=all", + "status": 404, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "not found"}, + "offset_ms": 1967 + }, { + "kind": "api", + "principal": "token:C-routesread", + "method": "GET", + "path": "/device/{device:router}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.42.0.0/16", "10.43.0.0/16"], + "enabledRoutes": ["10.42.0.0/16"] + }, + "offset_ms": 1984 + }] + }, { + "name": "R4", + "at": "2026-10-17T19:12:23.837090515Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-bothread", + "principal": "token:C-bothread", + "status": 200, + "response": { + "expires_in": 3600, + "scope": "devices:core:read devices:routes:read", + "token_type": "Bearer" + } + }, { + "kind": "api", + "principal": "token:C-bothread", + "method": "GET", + "path": "/device/{device:router}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.126.49.83", "fd7a:115c:a1e0::f628:3154"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:46Z", + "expires": "2027-04-15T19:11:46Z", + "hostname": "router", + "id": "{device:router}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:26Z", + "machineKey": "{machine:router}", + "name": "router.tail78f774.ts.net", + "nodeId": "{device:router}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:J-router}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:03f6ecfd81c7163982c03b2be5251b03f00a4ee9300f1c6f327fa79e6cce89e4", + "updateAvailable": true, + "user": "odin@example.com" + }, + "offset_ms": 1954 + }, { + "kind": "api", + "principal": "token:C-bothread", + "method": "GET", + "path": "/device/{device:router}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.126.49.83", "fd7a:115c:a1e0::f628:3154"], + "advertisedRoutes": ["10.42.0.0/16", "10.43.0.0/16"], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:41850", + "192.0.2.1:41850", + "198.51.100.2:41850", + "198.51.100.3:41850" + ], "latency": { + "Amsterdam": {"latencyMs": 12.121974, "preferred": true}, + "Ashburn": {"latencyMs": 92.49579800000001}, + "Bengaluru": {"latencyMs": 223.049729}, + "Chicago": {"latencyMs": 112.473843}, + "Dallas": {"latencyMs": 127.611117}, + "Denver": {"latencyMs": 138.74304700000002}, + "Dubai": {"latencyMs": 115.542879}, + "Frankfurt": {"latencyMs": 17.848171999999998}, + "Helsinki": {"latencyMs": 36.803263}, + "Hong Kong": {"latencyMs": 195.498962}, + "Honolulu": {"latencyMs": 197.858413}, + "Johannesburg": {"latencyMs": 202.611659}, + "London": {"latencyMs": 16.848427}, + "Los Angeles": {"latencyMs": 144.078965}, + "Madrid": {"latencyMs": 34.569279}, + "Miami": {"latencyMs": 120.192127}, + "Nairobi": {"latencyMs": 163.150029}, + "New York City": {"latencyMs": 91.777961}, + "Nuremberg": {"latencyMs": 25.529985}, + "Paris": {"latencyMs": 20.022621}, + "San Francisco": {"latencyMs": 151.626689}, + "Seattle": {"latencyMs": 146.41589199999999}, + "Singapore": {"latencyMs": 166.088443}, + "Tokyo": {"latencyMs": 246.742227}, + "Toronto": {"latencyMs": 119.959132}, + "Warsaw": {"latencyMs": 26.754834000000002} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:46Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": ["10.42.0.0/16"], + "expires": "2027-04-15T19:11:46Z", + "hostname": "router", + "id": "{device:router}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:26Z", + "machineKey": "{machine:router}", + "name": "router.tail78f774.ts.net", + "nodeId": "{device:router}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:J-router}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:03f6ecfd81c7163982c03b2be5251b03f00a4ee9300f1c6f327fa79e6cce89e4", + "updateAvailable": true, + "user": "odin@example.com" + }, + "offset_ms": 1972 + }, { + "kind": "api", + "principal": "token:C-bothread", + "method": "GET", + "path": "/tailnet/-/devices?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"devices": [{ + "addresses": ["100.122.9.101", "fd7a:115c:a1e0::d628:966"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:35808", + "192.0.2.1:35808", + "198.51.100.2:35808", + "198.51.100.3:35808" + ], "latency": { + "Amsterdam": {"latencyMs": 10.266454, "preferred": true}, + "Ashburn": {"latencyMs": 92.581656}, + "Bengaluru": {"latencyMs": 137.984551}, + "Chicago": {"latencyMs": 113.018518}, + "Dallas": {"latencyMs": 123.37870500000001}, + "Denver": {"latencyMs": 137.075862}, + "Dubai": {"latencyMs": 117.316326}, + "Frankfurt": {"latencyMs": 16.488429999999997}, + "Helsinki": {"latencyMs": 37.343756}, + "Hong Kong": {"latencyMs": 194.99831700000001}, + "Honolulu": {"latencyMs": 199.493277}, + "Johannesburg": {"latencyMs": 191.756567}, + "London": {"latencyMs": 16.520744}, + "Los Angeles": {"latencyMs": 143.220516}, + "Madrid": {"latencyMs": 32.898115999999995}, + "Miami": {"latencyMs": 119.222487}, + "Nairobi": {"latencyMs": 161.311658}, + "New York City": {"latencyMs": 86.312164}, + "Nuremberg": {"latencyMs": 25.476104}, + "Paris": {"latencyMs": 17.609609}, + "San Francisco": {"latencyMs": 151.56289}, + "Seattle": {"latencyMs": 146.214167}, + "Singapore": {"latencyMs": 166.590768}, + "Tokyo": {"latencyMs": 244.39915100000002}, + "Toronto": {"latencyMs": 119.302391}, + "Warsaw": {"latencyMs": 28.606751} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:35Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:35Z", + "hostname": "ci-runner", + "id": "{device:ci-runner}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:26Z", + "machineKey": "{machine:ci-runner}", + "name": "ci-runner.tail78f774.ts.net", + "nodeId": "{device:ci-runner}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:J-ci-runner}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:01cd85d3485f25e43e152855ec93ae76b56f9656ba54dab7d4ffe4c82ecf10cc", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.92.45.78", "fd7a:115c:a1e0::c728:2d4f"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:56751", + "192.0.2.1:56751", + "198.51.100.2:56751", + "198.51.100.3:56751" + ], "latency": { + "Amsterdam": {"latencyMs": 11.845241, "preferred": true}, + "Ashburn": {"latencyMs": 90.23803099999999}, + "Bengaluru": {"latencyMs": 213.357249}, + "Chicago": {"latencyMs": 111.021219}, + "Dallas": {"latencyMs": 126.10964899999999}, + "Denver": {"latencyMs": 137.747173}, + "Dubai": {"latencyMs": 116.26565699999999}, + "Frankfurt": {"latencyMs": 17.212332}, + "Helsinki": {"latencyMs": 36.390555}, + "Hong Kong": {"latencyMs": 195.078359}, + "Honolulu": {"latencyMs": 217.987536}, + "Johannesburg": {"latencyMs": 175.97738600000002}, + "London": {"latencyMs": 16.050832}, + "Los Angeles": {"latencyMs": 143.354849}, + "Madrid": {"latencyMs": 32.579556000000004}, + "Miami": {"latencyMs": 116.540298}, + "Nairobi": {"latencyMs": 161.03943}, + "New York City": {"latencyMs": 89.58474600000001}, + "Nuremberg": {"latencyMs": 26.428724}, + "Paris": {"latencyMs": 18.648634}, + "San Francisco": {"latencyMs": 149.201699}, + "Seattle": {"latencyMs": 147.72831}, + "Singapore": {"latencyMs": 181.545976}, + "Tokyo": {"latencyMs": 233.187819}, + "Toronto": {"latencyMs": 119.212352}, + "Warsaw": {"latencyMs": 28.524252999999998} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:44Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:44Z", + "hostname": "laptop", + "id": "{device:laptop}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-17T19:12:26Z", + "machineKey": "{machine:laptop}", + "name": "laptop.tail78f774.ts.net", + "nodeId": "{device:laptop}", + "nodeKey": "{nodekey:5}", + "oauthClientId": "{key:J-laptop}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tailnetLockError": "", + "tailnetLockKey": "nlpub:a62f8250a62bf17095189ebf24c4616c8a5a7a30b2b5c38e622f45f03657d0ca", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.77.73.61", "fd7a:115c:a1e0::28:493e"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:59663", + "192.0.2.1:59663", + "198.51.100.2:59663", + "198.51.100.3:59663" + ], "latency": { + "Amsterdam": {"latencyMs": 13.965559, "preferred": true}, + "Ashburn": {"latencyMs": 94.127739}, + "Bengaluru": {"latencyMs": 138.34985799999998}, + "Chicago": {"latencyMs": 113.006907}, + "Dallas": {"latencyMs": 126.38182}, + "Denver": {"latencyMs": 135.45923000000002}, + "Dubai": {"latencyMs": 116.222156}, + "Frankfurt": {"latencyMs": 17.592974}, + "Helsinki": {"latencyMs": 36.431022}, + "Hong Kong": {"latencyMs": 195.586638}, + "Honolulu": {"latencyMs": 220.76305299999999}, + "Johannesburg": {"latencyMs": 208.210431}, + "London": {"latencyMs": 16.463158}, + "Los Angeles": {"latencyMs": 144.57808}, + "Madrid": {"latencyMs": 34.533197}, + "Miami": {"latencyMs": 119.98886}, + "Nairobi": {"latencyMs": 174.307404}, + "New York City": {"latencyMs": 88.554272}, + "Nuremberg": {"latencyMs": 23.252912000000002}, + "Paris": {"latencyMs": 19.625595}, + "San Francisco": {"latencyMs": 151.129391}, + "Seattle": {"latencyMs": 147.061526}, + "Singapore": {"latencyMs": 173.424376}, + "Tokyo": {"latencyMs": 236.53889}, + "Toronto": {"latencyMs": 119.521553}, + "Warsaw": {"latencyMs": 28.692609} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:42Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:42Z", + "hostname": "managed", + "id": "{device:managed}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:26Z", + "machineKey": "{machine:managed}", + "name": "managed.tail78f774.ts.net", + "nodeId": "{device:managed}", + "nodeKey": "{nodekey:4}", + "oauthClientId": "{key:J-managed}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:managed"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:dc81cecc1b327b3f48471c4cdc9513c8388d7feabc734fbeedf63e3eb199b746", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.81.212.117", "fd7a:115c:a1e0::d628:d476"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:48635", + "192.0.2.1:48635", + "198.51.100.2:48635", + "198.51.100.3:48635" + ], "latency": { + "Amsterdam": {"latencyMs": 18.068428, "preferred": true}, + "Ashburn": {"latencyMs": 96.19809599999999}, + "Bengaluru": {"latencyMs": 149.507434}, + "Chicago": {"latencyMs": 114.13907900000001}, + "Dallas": {"latencyMs": 124.923851}, + "Denver": {"latencyMs": 137.865181}, + "Dubai": {"latencyMs": 118.653979}, + "Frankfurt": {"latencyMs": 19.332169999999998}, + "Helsinki": {"latencyMs": 35.860916}, + "Hong Kong": {"latencyMs": 205.890913}, + "Honolulu": {"latencyMs": 210.567951}, + "Johannesburg": {"latencyMs": 177.31955699999997}, + "London": {"latencyMs": 19.720675}, + "Los Angeles": {"latencyMs": 147.24026700000002}, + "Madrid": {"latencyMs": 34.874328000000006}, + "Miami": {"latencyMs": 118.868635}, + "Nairobi": {"latencyMs": 167.794918}, + "New York City": {"latencyMs": 90.916794}, + "Nuremberg": {"latencyMs": 26.556009}, + "Paris": {"latencyMs": 19.928114}, + "San Francisco": {"latencyMs": 150.087885}, + "Seattle": {"latencyMs": 146.148653}, + "Singapore": {"latencyMs": 174.201584}, + "Tokyo": {"latencyMs": 233.36791000000002}, + "Toronto": {"latencyMs": 120.936096}, + "Warsaw": {"latencyMs": 27.077673} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:40Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:40Z", + "hostname": "mixed", + "id": "{device:mixed}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:26Z", + "machineKey": "{machine:mixed}", + "name": "mixed.tail78f774.ts.net", + "nodeId": "{device:mixed}", + "nodeKey": "{nodekey:3}", + "oauthClientId": "{key:J-mixed}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci", "tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:1c880990870d2389000522ed85d8ada7f750867ba3d7bf2dfb7f337b4a76c5f4", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.116.71.108", "fd7a:115c:a1e0::8628:476d"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:34401", + "192.0.2.1:34401", + "198.51.100.2:34401", + "198.51.100.3:34401" + ], "latency": { + "Amsterdam": {"latencyMs": 10.937355, "preferred": true}, + "Ashburn": {"latencyMs": 96.26371}, + "Bengaluru": {"latencyMs": 145.96633}, + "Chicago": {"latencyMs": 112.53933400000001}, + "Dallas": {"latencyMs": 126.007017}, + "Denver": {"latencyMs": 138.493898}, + "Dubai": {"latencyMs": 115.479823}, + "Frankfurt": {"latencyMs": 16.107264}, + "Helsinki": {"latencyMs": 35.993153}, + "Hong Kong": {"latencyMs": 195.877514}, + "Honolulu": {"latencyMs": 205.064617}, + "Johannesburg": {"latencyMs": 172.651014}, + "London": {"latencyMs": 16.483313}, + "Los Angeles": {"latencyMs": 143.15759}, + "Madrid": {"latencyMs": 34.155393}, + "Miami": {"latencyMs": 117.436712}, + "Nairobi": {"latencyMs": 174.443672}, + "New York City": {"latencyMs": 88.222555}, + "Nuremberg": {"latencyMs": 25.788553}, + "Paris": {"latencyMs": 19.076505}, + "San Francisco": {"latencyMs": 150.29126000000002}, + "Seattle": {"latencyMs": 146.45190399999998}, + "Singapore": {"latencyMs": 165.902536}, + "Tokyo": {"latencyMs": 236.455097}, + "Toronto": {"latencyMs": 118.691958}, + "Warsaw": {"latencyMs": 27.970101} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:37Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:37Z", + "hostname": "prod-db", + "id": "{device:prod-db}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:26Z", + "machineKey": "{machine:prod-db}", + "name": "prod-db.tail78f774.ts.net", + "nodeId": "{device:prod-db}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:J-prod-db}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:55acf0519cbbc4d30dae8b1365637d412e3598542a71e4d6cc0cd10df6e3264e", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.126.49.83", "fd7a:115c:a1e0::f628:3154"], + "advertisedRoutes": ["10.42.0.0/16", "10.43.0.0/16"], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:41850", + "192.0.2.1:41850", + "198.51.100.2:41850", + "198.51.100.3:41850" + ], "latency": { + "Amsterdam": {"latencyMs": 12.121974, "preferred": true}, + "Ashburn": {"latencyMs": 92.49579800000001}, + "Bengaluru": {"latencyMs": 223.049729}, + "Chicago": {"latencyMs": 112.473843}, + "Dallas": {"latencyMs": 127.611117}, + "Denver": {"latencyMs": 138.74304700000002}, + "Dubai": {"latencyMs": 115.542879}, + "Frankfurt": {"latencyMs": 17.848171999999998}, + "Helsinki": {"latencyMs": 36.803263}, + "Hong Kong": {"latencyMs": 195.498962}, + "Honolulu": {"latencyMs": 197.858413}, + "Johannesburg": {"latencyMs": 202.611659}, + "London": {"latencyMs": 16.848427}, + "Los Angeles": {"latencyMs": 144.078965}, + "Madrid": {"latencyMs": 34.569279}, + "Miami": {"latencyMs": 120.192127}, + "Nairobi": {"latencyMs": 163.150029}, + "New York City": {"latencyMs": 91.777961}, + "Nuremberg": {"latencyMs": 25.529985}, + "Paris": {"latencyMs": 20.022621}, + "San Francisco": {"latencyMs": 151.626689}, + "Seattle": {"latencyMs": 146.41589199999999}, + "Singapore": {"latencyMs": 166.088443}, + "Tokyo": {"latencyMs": 246.742227}, + "Toronto": {"latencyMs": 119.959132}, + "Warsaw": {"latencyMs": 26.754834000000002} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:46Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": ["10.42.0.0/16"], + "expires": "2027-04-15T19:11:46Z", + "hostname": "router", + "id": "{device:router}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:26Z", + "machineKey": "{machine:router}", + "name": "router.tail78f774.ts.net", + "nodeId": "{device:router}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:J-router}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:03f6ecfd81c7163982c03b2be5251b03f00a4ee9300f1c6f327fa79e6cce89e4", + "updateAvailable": true, + "user": "odin@example.com" + }]}, + "offset_ms": 1993 + }, { + "kind": "api", + "principal": "token:C-bothread", + "method": "GET", + "path": "/device/{device:router}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.42.0.0/16", "10.43.0.0/16"], + "enabledRoutes": ["10.42.0.0/16"] + }, + "offset_ms": 2025 + }] + }, { + "name": "O1", + "at": "2026-10-17T19:12:25.879143272Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-bothread", + "principal": "token:C-bothread/O1", + "scope": "devices:routes:read devices:core:read devices:routes:read", + "status": 200, + "response": { + "expires_in": 3600, + "scope": "devices:core:read devices:routes:read", + "token_type": "Bearer" + } + }] + }, { + "name": "O2", + "at": "2026-10-17T19:12:27.808927349Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-bothread", + "principal": "token:C-bothread/O2", + "status": 200, + "response": { + "expires_in": 3600, + "scope": "devices:core:read devices:routes:read", + "token_type": "Bearer" + } + }] + }, { + "name": "O3", + "at": "2026-10-17T19:12:29.827124753Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-coreread", + "principal": "token:C-coreread/O3", + "scope": "devices:core", + "status": 403, + "response": {"message": "OAuth client cannot grant scopes \"devices:core\""} + }] + }, { + "name": "O4", + "at": "2026-10-17T19:12:31.84552172Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-all", + "principal": "token:C-all/O4", + "scope": "nosuch:read", + "status": 200, + "response": {"expires_in": 3600, "scope": "all", "tags": "tag:ci", "token_type": "Bearer"} + }] + }, { + "name": "O5", + "at": "2026-10-17T19:12:33.864381644Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-bothread", + "principal": "token:C-bothread/O5a", + "status": 200, + "response": { + "expires_in": 3600, + "scope": "devices:core:read devices:routes:read", + "token_type": "Bearer" + } + }, { + "kind": "token", + "client": "C-bothread", + "principal": "token:C-bothread/O5b", + "status": 200, + "response": { + "expires_in": 3600, + "scope": "devices:core:read devices:routes:read", + "token_type": "Bearer" + }, + "offset_ms": 2019 + }] + }, { + "name": "O6", + "at": "2026-10-17T19:12:37.901719582Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "token:C-bothread/O1", + "method": "GET", + "path": "/tailnet/-/devices", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"devices": [{ + "addresses": ["100.122.9.101", "fd7a:115c:a1e0::d628:966"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:35Z", + "expires": "2027-04-15T19:11:35Z", + "hostname": "ci-runner", + "id": "{device:ci-runner}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:38Z", + "machineKey": "{machine:ci-runner}", + "name": "ci-runner.tail78f774.ts.net", + "nodeId": "{device:ci-runner}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:J-ci-runner}", + "os": "linux", + "tags": ["tag:ci"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:01cd85d3485f25e43e152855ec93ae76b56f9656ba54dab7d4ffe4c82ecf10cc", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.92.45.78", "fd7a:115c:a1e0::c728:2d4f"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:44Z", + "expires": "2027-04-15T19:11:44Z", + "hostname": "laptop", + "id": "{device:laptop}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-17T19:12:38Z", + "machineKey": "{machine:laptop}", + "name": "laptop.tail78f774.ts.net", + "nodeId": "{device:laptop}", + "nodeKey": "{nodekey:5}", + "oauthClientId": "{key:J-laptop}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:a62f8250a62bf17095189ebf24c4616c8a5a7a30b2b5c38e622f45f03657d0ca", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.77.73.61", "fd7a:115c:a1e0::28:493e"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:42Z", + "expires": "2027-04-15T19:11:42Z", + "hostname": "managed", + "id": "{device:managed}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:38Z", + "machineKey": "{machine:managed}", + "name": "managed.tail78f774.ts.net", + "nodeId": "{device:managed}", + "nodeKey": "{nodekey:4}", + "oauthClientId": "{key:J-managed}", + "os": "linux", + "tags": ["tag:managed"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:dc81cecc1b327b3f48471c4cdc9513c8388d7feabc734fbeedf63e3eb199b746", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.81.212.117", "fd7a:115c:a1e0::d628:d476"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:40Z", + "expires": "2027-04-15T19:11:40Z", + "hostname": "mixed", + "id": "{device:mixed}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:38Z", + "machineKey": "{machine:mixed}", + "name": "mixed.tail78f774.ts.net", + "nodeId": "{device:mixed}", + "nodeKey": "{nodekey:3}", + "oauthClientId": "{key:J-mixed}", + "os": "linux", + "tags": ["tag:ci", "tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:1c880990870d2389000522ed85d8ada7f750867ba3d7bf2dfb7f337b4a76c5f4", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.116.71.108", "fd7a:115c:a1e0::8628:476d"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:37Z", + "expires": "2027-04-15T19:11:37Z", + "hostname": "prod-db", + "id": "{device:prod-db}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:38Z", + "machineKey": "{machine:prod-db}", + "name": "prod-db.tail78f774.ts.net", + "nodeId": "{device:prod-db}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:J-prod-db}", + "os": "linux", + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:55acf0519cbbc4d30dae8b1365637d412e3598542a71e4d6cc0cd10df6e3264e", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.126.49.83", "fd7a:115c:a1e0::f628:3154"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:46Z", + "expires": "2027-04-15T19:11:46Z", + "hostname": "router", + "id": "{device:router}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:12:38Z", + "machineKey": "{machine:router}", + "name": "router.tail78f774.ts.net", + "nodeId": "{device:router}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:J-router}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:03f6ecfd81c7163982c03b2be5251b03f00a4ee9300f1c6f327fa79e6cce89e4", + "updateAvailable": true, + "user": "odin@example.com" + }]} + }] + }, { + "name": "K1", + "at": "2026-10-17T19:12:37.918397539Z", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "K1", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": true, + "preauthorized": true, + "reusable": false, + "tags": ["tag:ci"] + }}}, "deviceDescription": "x", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": true, + "preauthorized": true, + "reusable": false, + "tags": ["tag:ci"] + }}}, + "created": "2026-10-17T19:12:40Z", + "expires": "2026-10-17T20:12:40Z", + "expirySeconds": 3600, + "id": "{key:K1}", + "keyType": "auth", + "userId": "{unmatched:1}" + } + }, { + "kind": "api", + "principal": "admin", + "method": "DELETE", + "path": "/tailnet/-/keys/{key:K1}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": null, + "offset_ms": 2003 + }] + }, { + "name": "K2", + "at": "2026-10-17T19:12:41.939387046Z", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "K2", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": true, + "preauthorized": true, + "reusable": false, + "tags": ["tag:ci"] + }}}, "expirySeconds": 3600, "keyType": "nosuch"}, + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "invalid key type, \"nosuch\" is not supported"} + }] + }, { + "name": "K3", + "at": "2026-10-17T19:12:43.956911847Z", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "K3", + "principal": "token:C-coreread", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": true, + "preauthorized": true, + "reusable": false, + "tags": ["tag:ci"] + }}}, "expirySeconds": 3600}, + "status": 404, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "not found"} + }] + }, { + "name": "K4", + "at": "2026-10-17T19:12:45.97516222Z", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "K4", + "principal": "token:C-coreread", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": true, + "preauthorized": true, + "reusable": false, + "tags": ["tag:ci"] + }}}, "deviceDescription": "x", "expirySeconds": 3600}, + "status": 404, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "not found"} + }] + }, { + "name": "K5", + "at": "2026-10-17T19:12:47.993540123Z", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "K5", + "principal": "token:C-coreread", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": true, + "preauthorized": true, + "reusable": false, + "tags": ["tag:ci"] + }}}, "expirySeconds": 3600, "keyType": "nosuch"}, + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "invalid key type, \"nosuch\" is not supported"} + }] + }, { + "name": "J0", + "at": "2026-10-17T19:12:50.011425741Z", + "result": "observed", + "actions": [{ + "kind": "api", + "client": "C-pf", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-pf", + "keyType": "client", + "scopes": ["policy_file"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:12:52Z", + "description": "tscap-saasprobe C-pf", + "id": "{client:C-pf}", + "keyType": "client", + "scopes": ["policy_file"], + "userId": "{unmatched:1}" + } + }] + }, { + "name": "J1", + "at": "2026-10-17T19:12:52.032302598Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-all", + "principal": "token:C-all/policy_file", + "scope": "policy_file", + "status": 200, + "response": {"expires_in": 3600, "scope": "policy_file", "token_type": "Bearer"} + }] + }, { + "name": "J2", + "at": "2026-10-17T19:12:54.051426045Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "token:C-all/policy_file", + "method": "GET", + "path": "/tailnet/-/devices", + "status": 404, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "not found"} + }] + }, { + "name": "J3", + "at": "2026-10-17T19:12:54.068873648Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:1}"}, + "response": { + "acls": [{"action": "accept", "dst": ["*:*"], "src": ["*"]}], + "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + } + } + }, { + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": { + "acls": [{"action": "accept", "dst": ["*:*"], "src": ["*"]}], + "hosts": {"db": "100.116.71.108"}, + "ssh": [], + "sshTests": [ + {"accept": ["root"], "dst": ["tag:ci"], "src": "odin@example.com"}, + {"accept": ["root"], "dst": ["100.116.71.108"], "src": "odin@example.com"}, + {"accept": ["root"], "dst": ["db"], "src": "odin@example.com"} + ], + "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + } + }, + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": {"data": [{"errors": [ + "[ssh test error]: src \"odin@example.com\" at \"100.64.0.0\", dst \"tag:ci\" at \"100.64.0.1\", ssh user \"root\": want: \"accept\" got: \"deny\"" + ], "user": "odin@example.com"}, {"errors": [ + "[ssh test error]: src \"odin@example.com\" at \"100.64.0.0\", dst \"100.116.71.108\" at \"100.116.71.108\", ssh user \"root\": want: \"accept\" got: \"deny\"" + ], "user": "odin@example.com"}, {"errors": [ + "[ssh test error]: src \"odin@example.com\" at \"100.64.0.0\", dst \"db\" at \"100.116.71.108\", ssh user \"root\": want: \"accept\" got: \"deny\"" + ], "user": "odin@example.com"}], "message": "test(s) failed"}, + "offset_ms": 16 + }] + }, { + "name": "J4", + "at": "2026-10-17T19:12:56.070998898Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "token:C-all/policy_file", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": { + "acls": [{"action": "accept", "dst": ["*:*"], "src": ["*"]}], + "hosts": {"db": "100.116.71.108"}, + "ssh": [], + "sshTests": [ + {"accept": ["root"], "dst": ["tag:ci"], "src": "odin@example.com"}, + {"accept": ["root"], "dst": ["100.116.71.108"], "src": "odin@example.com"}, + {"accept": ["root"], "dst": ["db"], "src": "odin@example.com"} + ], + "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + } + }, + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": {"data": [{"errors": [ + "[ssh test error]: src \"odin@example.com\" at \"100.64.0.0\", dst \"tag:ci\" at \"100.64.0.1\", ssh user \"root\": want: \"accept\" got: \"deny\"" + ], "user": "odin@example.com"}, {"errors": [ + "[ssh test error]: src \"odin@example.com\" at \"100.64.0.0\", dst \"100.116.71.108\" at \"100.116.71.108\", ssh user \"root\": want: \"accept\" got: \"deny\"" + ], "user": "odin@example.com"}, {"errors": [ + "[ssh test error]: src \"odin@example.com\" at \"100.64.0.0\", dst \"db\" at \"100.116.71.108\", ssh user \"root\": want: \"accept\" got: \"deny\"" + ], "user": "odin@example.com"}], "message": "test(s) failed"} + }] + }, { + "name": "J5", + "at": "2026-10-17T19:12:58.089762458Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:1}"}, + "response": { + "acls": [{"action": "accept", "dst": ["*:*"], "src": ["*"]}], + "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + } + } + }] + }, { + "name": "E1", + "at": "2026-10-17T19:12:58.107166803Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-all", + "principal": "token:C-all", + "status": 200, + "response": {"expires_in": 3600, "scope": "all", "tags": "tag:ci", "token_type": "Bearer"} + }] + }, { + "name": "E2", + "at": "2026-10-17T19:13:00.106959947Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-all", + "principal": "token:C-all/tag:prod", + "request_tags": ["tag:prod"], + "status": 400, + "response": {"message": "requested tags [tag:prod] are invalid or not permitted"} + }] + }, { + "name": "E3", + "at": "2026-10-17T19:13:02.124646203Z", + "note": "not sent: token:C-all/tag:prod was refused its token; setup-failed: every op needed a refused token", + "result": "setup-failed" + }, { + "name": "E4", + "at": "2026-10-17T19:13:02.124713711Z", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "K-E4", + "principal": "token:C-all", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:prod"] + }}}, "description": "tscap-saasprobe K-E4", "expirySeconds": 3600}, + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "requested tags [tag:prod] are invalid or not permitted"} + }] + }, { + "name": "E5", + "at": "2026-10-17T19:13:04.142878874Z", + "result": "observed", + "actions": [{ + "kind": "api", + "client": "C-E5", + "principal": "token:C-all", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-E5", + "keyType": "client", + "scopes": ["auth_keys"], + "tags": ["tag:prod"] + }, + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "requested tags [tag:prod] are invalid or not permitted"} + }] + }, { + "name": "E6", + "at": "2026-10-17T19:13:06.162980281Z", + "result": "observed", + "actions": [{ + "kind": "api", + "client": "C-all-1", + "principal": "token:C-all", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-all-1", + "keyType": "client", + "scopes": ["all"], + "tags": ["tag:ci"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:13:08Z", + "description": "tscap-saasprobe C-all-1", + "id": "{client:C-all-1}", + "keyType": "client", + "scopes": ["all"], + "tags": ["tag:ci"] + } + }] + }, { + "name": "E7", + "at": "2026-10-17T19:13:08.180954206Z", + "result": "observed", + "actions": [{ + "kind": "api", + "client": "C-all-2", + "principal": "token:C-all", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-all-2", + "keyType": "client", + "scopes": ["all"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:13:10Z", + "description": "tscap-saasprobe C-all-2", + "id": "{client:C-all-2}", + "keyType": "client", + "scopes": ["all"] + } + }] + }, { + "name": "E8", + "at": "2026-10-17T19:13:10.200166301Z", + "result": "observed", + "actions": [{ + "kind": "api", + "client": "C-all-3", + "principal": "token:C-all", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-all-3", + "keyType": "client", + "scopes": ["auth_keys", "oauth_keys"], + "tags": ["tag:ci"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:13:12Z", + "description": "tscap-saasprobe C-all-3", + "id": "{client:C-all-3}", + "keyType": "client", + "scopes": ["auth_keys", "oauth_keys"], + "tags": ["tag:ci"] + } + }] + }, { + "name": "E9a", + "at": "2026-10-17T19:13:12.218811002Z", + "note": "not sent: token:C-all-1/tag:prod was refused its token", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-all-1", + "principal": "token:C-all-1", + "status": 200, + "response": {"expires_in": 3600, "scope": "all", "tags": "tag:ci", "token_type": "Bearer"} + }, { + "kind": "token", + "client": "C-all-1", + "principal": "token:C-all-1/tag:prod", + "request_tags": ["tag:prod"], + "status": 400, + "response": {"message": "requested tags [tag:prod] are invalid or not permitted"}, + "offset_ms": 2018 + }] + }, { + "name": "E9b", + "at": "2026-10-17T19:13:16.255007555Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-all-2", + "principal": "token:C-all-2", + "status": 200, + "response": {"expires_in": 3600, "scope": "all", "token_type": "Bearer"} + }, { + "kind": "token", + "client": "C-all-2", + "principal": "token:C-all-2/tag:prod", + "request_tags": ["tag:prod"], + "status": 200, + "response": { + "expires_in": 3600, + "scope": "all", + "tags": "tag:prod", + "token_type": "Bearer" + }, + "offset_ms": 2020 + }, { + "kind": "api", + "key": "K-E9b", + "principal": "token:C-all-2/tag:prod", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:prod"] + }}}, "description": "tscap-saasprobe K-E9b", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:prod"] + }}}, + "created": "2026-10-17T19:13:22Z", + "description": "tscap-saasprobe K-E9b", + "expires": "2026-10-17T20:13:22Z", + "expirySeconds": 3600, + "id": "{key:K-E9b}", + "keyType": "auth" + }, + "offset_ms": 4038 + }, { + "kind": "api", + "principal": "admin", + "method": "DELETE", + "path": "/tailnet/-/keys/{key:K-E9b}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": null, + "offset_ms": 6056 + }] + }, { + "name": "T1", + "at": "2026-10-17T19:13:24.333240349Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-core", + "principal": "token:C-core", + "status": 200, + "response": { + "expires_in": 3600, + "scope": "devices:core", + "tags": "tag:ci", + "token_type": "Bearer" + } + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:ci-runner}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.122.9.101", "fd7a:115c:a1e0::d628:966"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:35808", + "192.0.2.1:35808", + "198.51.100.2:35808", + "198.51.100.3:35808" + ], "latency": { + "Amsterdam": {"latencyMs": 10.266454, "preferred": true}, + "Ashburn": {"latencyMs": 92.581656}, + "Bengaluru": {"latencyMs": 137.984551}, + "Chicago": {"latencyMs": 113.018518}, + "Dallas": {"latencyMs": 123.37870500000001}, + "Denver": {"latencyMs": 137.075862}, + "Dubai": {"latencyMs": 117.316326}, + "Frankfurt": {"latencyMs": 16.488429999999997}, + "Helsinki": {"latencyMs": 37.343756}, + "Hong Kong": {"latencyMs": 194.99831700000001}, + "Honolulu": {"latencyMs": 199.493277}, + "Johannesburg": {"latencyMs": 191.756567}, + "London": {"latencyMs": 16.520744}, + "Los Angeles": {"latencyMs": 143.220516}, + "Madrid": {"latencyMs": 32.898115999999995}, + "Miami": {"latencyMs": 119.222487}, + "Nairobi": {"latencyMs": 161.311658}, + "New York City": {"latencyMs": 86.312164}, + "Nuremberg": {"latencyMs": 25.476104}, + "Paris": {"latencyMs": 17.609609}, + "San Francisco": {"latencyMs": 151.56289}, + "Seattle": {"latencyMs": 146.214167}, + "Singapore": {"latencyMs": 166.590768}, + "Tokyo": {"latencyMs": 244.39915100000002}, + "Toronto": {"latencyMs": 119.302391}, + "Warsaw": {"latencyMs": 28.606751} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:35Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:35Z", + "hostname": "ci-runner", + "id": "{device:ci-runner}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:13:26Z", + "machineKey": "{machine:ci-runner}", + "name": "ci-runner.tail78f774.ts.net", + "nodeId": "{device:ci-runner}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:J-ci-runner}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:01cd85d3485f25e43e152855ec93ae76b56f9656ba54dab7d4ffe4c82ecf10cc", + "updateAvailable": true, + "user": "odin@example.com" + }, + "offset_ms": 2018 + }, { + "kind": "api", + "principal": "token:C-core", + "method": "POST", + "path": "/device/{device:ci-runner}/tags", + "header": {"Content-Type": "application/json"}, + "body": {"tags": ["tag:ci"]}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": null, + "offset_ms": 2035 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:ci-runner}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.122.9.101", "fd7a:115c:a1e0::d628:966"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:35808", + "192.0.2.1:35808", + "198.51.100.2:35808", + "198.51.100.3:35808" + ], "latency": { + "Amsterdam": {"latencyMs": 10.266454, "preferred": true}, + "Ashburn": {"latencyMs": 92.581656}, + "Bengaluru": {"latencyMs": 137.984551}, + "Chicago": {"latencyMs": 113.018518}, + "Dallas": {"latencyMs": 123.37870500000001}, + "Denver": {"latencyMs": 137.075862}, + "Dubai": {"latencyMs": 117.316326}, + "Frankfurt": {"latencyMs": 16.488429999999997}, + "Helsinki": {"latencyMs": 37.343756}, + "Hong Kong": {"latencyMs": 194.99831700000001}, + "Honolulu": {"latencyMs": 199.493277}, + "Johannesburg": {"latencyMs": 191.756567}, + "London": {"latencyMs": 16.520744}, + "Los Angeles": {"latencyMs": 143.220516}, + "Madrid": {"latencyMs": 32.898115999999995}, + "Miami": {"latencyMs": 119.222487}, + "Nairobi": {"latencyMs": 161.311658}, + "New York City": {"latencyMs": 86.312164}, + "Nuremberg": {"latencyMs": 25.476104}, + "Paris": {"latencyMs": 17.609609}, + "San Francisco": {"latencyMs": 151.56289}, + "Seattle": {"latencyMs": 146.214167}, + "Singapore": {"latencyMs": 166.590768}, + "Tokyo": {"latencyMs": 244.39915100000002}, + "Toronto": {"latencyMs": 119.302391}, + "Warsaw": {"latencyMs": 28.606751} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:35Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:35Z", + "hostname": "ci-runner", + "id": "{device:ci-runner}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:13:28Z", + "machineKey": "{machine:ci-runner}", + "name": "ci-runner.tail78f774.ts.net", + "nodeId": "{device:ci-runner}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:J-ci-runner}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:01cd85d3485f25e43e152855ec93ae76b56f9656ba54dab7d4ffe4c82ecf10cc", + "updateAvailable": true, + "user": "odin@example.com" + }, + "offset_ms": 4038 + }] + }, { + "name": "T2", + "at": "2026-10-17T19:13:28.388943873Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:ci-runner}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.122.9.101", "fd7a:115c:a1e0::d628:966"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:35808", + "192.0.2.1:35808", + "198.51.100.2:35808", + "198.51.100.3:35808" + ], "latency": { + "Amsterdam": {"latencyMs": 10.266454, "preferred": true}, + "Ashburn": {"latencyMs": 92.581656}, + "Bengaluru": {"latencyMs": 137.984551}, + "Chicago": {"latencyMs": 113.018518}, + "Dallas": {"latencyMs": 123.37870500000001}, + "Denver": {"latencyMs": 137.075862}, + "Dubai": {"latencyMs": 117.316326}, + "Frankfurt": {"latencyMs": 16.488429999999997}, + "Helsinki": {"latencyMs": 37.343756}, + "Hong Kong": {"latencyMs": 194.99831700000001}, + "Honolulu": {"latencyMs": 199.493277}, + "Johannesburg": {"latencyMs": 191.756567}, + "London": {"latencyMs": 16.520744}, + "Los Angeles": {"latencyMs": 143.220516}, + "Madrid": {"latencyMs": 32.898115999999995}, + "Miami": {"latencyMs": 119.222487}, + "Nairobi": {"latencyMs": 161.311658}, + "New York City": {"latencyMs": 86.312164}, + "Nuremberg": {"latencyMs": 25.476104}, + "Paris": {"latencyMs": 17.609609}, + "San Francisco": {"latencyMs": 151.56289}, + "Seattle": {"latencyMs": 146.214167}, + "Singapore": {"latencyMs": 166.590768}, + "Tokyo": {"latencyMs": 244.39915100000002}, + "Toronto": {"latencyMs": 119.302391}, + "Warsaw": {"latencyMs": 28.606751} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:35Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:35Z", + "hostname": "ci-runner", + "id": "{device:ci-runner}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:13:28Z", + "machineKey": "{machine:ci-runner}", + "name": "ci-runner.tail78f774.ts.net", + "nodeId": "{device:ci-runner}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:J-ci-runner}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:01cd85d3485f25e43e152855ec93ae76b56f9656ba54dab7d4ffe4c82ecf10cc", + "updateAvailable": true, + "user": "odin@example.com" + } + }, { + "kind": "api", + "principal": "token:C-core", + "method": "POST", + "path": "/device/{device:ci-runner}/tags", + "header": {"Content-Type": "application/json"}, + "body": {"tags": ["tag:prod"]}, + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "requested tags [tag:prod] are invalid or not permitted"}, + "offset_ms": 17 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:ci-runner}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.122.9.101", "fd7a:115c:a1e0::d628:966"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:35808", + "192.0.2.1:35808", + "198.51.100.2:35808", + "198.51.100.3:35808" + ], "latency": { + "Amsterdam": {"latencyMs": 10.266454, "preferred": true}, + "Ashburn": {"latencyMs": 92.581656}, + "Bengaluru": {"latencyMs": 137.984551}, + "Chicago": {"latencyMs": 113.018518}, + "Dallas": {"latencyMs": 123.37870500000001}, + "Denver": {"latencyMs": 137.075862}, + "Dubai": {"latencyMs": 117.316326}, + "Frankfurt": {"latencyMs": 16.488429999999997}, + "Helsinki": {"latencyMs": 37.343756}, + "Hong Kong": {"latencyMs": 194.99831700000001}, + "Honolulu": {"latencyMs": 199.493277}, + "Johannesburg": {"latencyMs": 191.756567}, + "London": {"latencyMs": 16.520744}, + "Los Angeles": {"latencyMs": 143.220516}, + "Madrid": {"latencyMs": 32.898115999999995}, + "Miami": {"latencyMs": 119.222487}, + "Nairobi": {"latencyMs": 161.311658}, + "New York City": {"latencyMs": 86.312164}, + "Nuremberg": {"latencyMs": 25.476104}, + "Paris": {"latencyMs": 17.609609}, + "San Francisco": {"latencyMs": 151.56289}, + "Seattle": {"latencyMs": 146.214167}, + "Singapore": {"latencyMs": 166.590768}, + "Tokyo": {"latencyMs": 244.39915100000002}, + "Toronto": {"latencyMs": 119.302391}, + "Warsaw": {"latencyMs": 28.606751} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:35Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:35Z", + "hostname": "ci-runner", + "id": "{device:ci-runner}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:13:30Z", + "machineKey": "{machine:ci-runner}", + "name": "ci-runner.tail78f774.ts.net", + "nodeId": "{device:ci-runner}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:J-ci-runner}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:01cd85d3485f25e43e152855ec93ae76b56f9656ba54dab7d4ffe4c82ecf10cc", + "updateAvailable": true, + "user": "odin@example.com" + }, + "offset_ms": 2000 + }] + }, { + "name": "T3", + "at": "2026-10-17T19:13:30.425538448Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:prod-db}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.116.71.108", "fd7a:115c:a1e0::8628:476d"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:34401", + "192.0.2.1:34401", + "198.51.100.2:34401", + "198.51.100.3:34401" + ], "latency": { + "Amsterdam": {"latencyMs": 10.937355, "preferred": true}, + "Ashburn": {"latencyMs": 96.26371}, + "Bengaluru": {"latencyMs": 145.96633}, + "Chicago": {"latencyMs": 112.53933400000001}, + "Dallas": {"latencyMs": 126.007017}, + "Denver": {"latencyMs": 138.493898}, + "Dubai": {"latencyMs": 115.479823}, + "Frankfurt": {"latencyMs": 16.107264}, + "Helsinki": {"latencyMs": 35.993153}, + "Hong Kong": {"latencyMs": 195.877514}, + "Honolulu": {"latencyMs": 205.064617}, + "Johannesburg": {"latencyMs": 172.651014}, + "London": {"latencyMs": 16.483313}, + "Los Angeles": {"latencyMs": 143.15759}, + "Madrid": {"latencyMs": 34.155393}, + "Miami": {"latencyMs": 117.436712}, + "Nairobi": {"latencyMs": 174.443672}, + "New York City": {"latencyMs": 88.222555}, + "Nuremberg": {"latencyMs": 25.788553}, + "Paris": {"latencyMs": 19.076505}, + "San Francisco": {"latencyMs": 150.29126000000002}, + "Seattle": {"latencyMs": 146.45190399999998}, + "Singapore": {"latencyMs": 165.902536}, + "Tokyo": {"latencyMs": 236.455097}, + "Toronto": {"latencyMs": 118.691958}, + "Warsaw": {"latencyMs": 27.970101} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:37Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:37Z", + "hostname": "prod-db", + "id": "{device:prod-db}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:13:30Z", + "machineKey": "{machine:prod-db}", + "name": "prod-db.tail78f774.ts.net", + "nodeId": "{device:prod-db}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:J-prod-db}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:55acf0519cbbc4d30dae8b1365637d412e3598542a71e4d6cc0cd10df6e3264e", + "updateAvailable": true, + "user": "odin@example.com" + } + }, { + "kind": "api", + "principal": "token:C-core", + "method": "POST", + "path": "/device/{device:prod-db}/tags", + "header": {"Content-Type": "application/json"}, + "body": {"tags": ["tag:ci", "tag:prod"]}, + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "message": "cannot remove current tags: requested tags [tag:prod] are invalid or not permitted" + }, + "offset_ms": 17 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:prod-db}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.116.71.108", "fd7a:115c:a1e0::8628:476d"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:34401", + "192.0.2.1:34401", + "198.51.100.2:34401", + "198.51.100.3:34401" + ], "latency": { + "Amsterdam": {"latencyMs": 10.937355, "preferred": true}, + "Ashburn": {"latencyMs": 96.26371}, + "Bengaluru": {"latencyMs": 145.96633}, + "Chicago": {"latencyMs": 112.53933400000001}, + "Dallas": {"latencyMs": 126.007017}, + "Denver": {"latencyMs": 138.493898}, + "Dubai": {"latencyMs": 115.479823}, + "Frankfurt": {"latencyMs": 16.107264}, + "Helsinki": {"latencyMs": 35.993153}, + "Hong Kong": {"latencyMs": 195.877514}, + "Honolulu": {"latencyMs": 205.064617}, + "Johannesburg": {"latencyMs": 172.651014}, + "London": {"latencyMs": 16.483313}, + "Los Angeles": {"latencyMs": 143.15759}, + "Madrid": {"latencyMs": 34.155393}, + "Miami": {"latencyMs": 117.436712}, + "Nairobi": {"latencyMs": 174.443672}, + "New York City": {"latencyMs": 88.222555}, + "Nuremberg": {"latencyMs": 25.788553}, + "Paris": {"latencyMs": 19.076505}, + "San Francisco": {"latencyMs": 150.29126000000002}, + "Seattle": {"latencyMs": 146.45190399999998}, + "Singapore": {"latencyMs": 165.902536}, + "Tokyo": {"latencyMs": 236.455097}, + "Toronto": {"latencyMs": 118.691958}, + "Warsaw": {"latencyMs": 27.970101} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:37Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:37Z", + "hostname": "prod-db", + "id": "{device:prod-db}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:13:32Z", + "machineKey": "{machine:prod-db}", + "name": "prod-db.tail78f774.ts.net", + "nodeId": "{device:prod-db}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:J-prod-db}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:55acf0519cbbc4d30dae8b1365637d412e3598542a71e4d6cc0cd10df6e3264e", + "updateAvailable": true, + "user": "odin@example.com" + }, + "offset_ms": 1982 + }] + }, { + "name": "T4", + "at": "2026-10-17T19:13:32.42462851Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:prod-db}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.116.71.108", "fd7a:115c:a1e0::8628:476d"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:34401", + "192.0.2.1:34401", + "198.51.100.2:34401", + "198.51.100.3:34401" + ], "latency": { + "Amsterdam": {"latencyMs": 10.937355, "preferred": true}, + "Ashburn": {"latencyMs": 96.26371}, + "Bengaluru": {"latencyMs": 145.96633}, + "Chicago": {"latencyMs": 112.53933400000001}, + "Dallas": {"latencyMs": 126.007017}, + "Denver": {"latencyMs": 138.493898}, + "Dubai": {"latencyMs": 115.479823}, + "Frankfurt": {"latencyMs": 16.107264}, + "Helsinki": {"latencyMs": 35.993153}, + "Hong Kong": {"latencyMs": 195.877514}, + "Honolulu": {"latencyMs": 205.064617}, + "Johannesburg": {"latencyMs": 172.651014}, + "London": {"latencyMs": 16.483313}, + "Los Angeles": {"latencyMs": 143.15759}, + "Madrid": {"latencyMs": 34.155393}, + "Miami": {"latencyMs": 117.436712}, + "Nairobi": {"latencyMs": 174.443672}, + "New York City": {"latencyMs": 88.222555}, + "Nuremberg": {"latencyMs": 25.788553}, + "Paris": {"latencyMs": 19.076505}, + "San Francisco": {"latencyMs": 150.29126000000002}, + "Seattle": {"latencyMs": 146.45190399999998}, + "Singapore": {"latencyMs": 165.902536}, + "Tokyo": {"latencyMs": 236.455097}, + "Toronto": {"latencyMs": 118.691958}, + "Warsaw": {"latencyMs": 27.970101} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:37Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:37Z", + "hostname": "prod-db", + "id": "{device:prod-db}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:13:32Z", + "machineKey": "{machine:prod-db}", + "name": "prod-db.tail78f774.ts.net", + "nodeId": "{device:prod-db}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:J-prod-db}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:55acf0519cbbc4d30dae8b1365637d412e3598542a71e4d6cc0cd10df6e3264e", + "updateAvailable": true, + "user": "odin@example.com" + } + }, { + "kind": "api", + "principal": "token:C-core", + "method": "POST", + "path": "/device/{device:prod-db}/tags", + "header": {"Content-Type": "application/json"}, + "body": {"tags": ["tag:ci"]}, + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "message": "cannot remove current tags: requested tags [tag:prod] are invalid or not permitted" + }, + "offset_ms": 16 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:prod-db}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.116.71.108", "fd7a:115c:a1e0::8628:476d"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:34401", + "192.0.2.1:34401", + "198.51.100.2:34401", + "198.51.100.3:34401" + ], "latency": { + "Amsterdam": {"latencyMs": 10.937355, "preferred": true}, + "Ashburn": {"latencyMs": 96.26371}, + "Bengaluru": {"latencyMs": 145.96633}, + "Chicago": {"latencyMs": 112.53933400000001}, + "Dallas": {"latencyMs": 126.007017}, + "Denver": {"latencyMs": 138.493898}, + "Dubai": {"latencyMs": 115.479823}, + "Frankfurt": {"latencyMs": 16.107264}, + "Helsinki": {"latencyMs": 35.993153}, + "Hong Kong": {"latencyMs": 195.877514}, + "Honolulu": {"latencyMs": 205.064617}, + "Johannesburg": {"latencyMs": 172.651014}, + "London": {"latencyMs": 16.483313}, + "Los Angeles": {"latencyMs": 143.15759}, + "Madrid": {"latencyMs": 34.155393}, + "Miami": {"latencyMs": 117.436712}, + "Nairobi": {"latencyMs": 174.443672}, + "New York City": {"latencyMs": 88.222555}, + "Nuremberg": {"latencyMs": 25.788553}, + "Paris": {"latencyMs": 19.076505}, + "San Francisco": {"latencyMs": 150.29126000000002}, + "Seattle": {"latencyMs": 146.45190399999998}, + "Singapore": {"latencyMs": 165.902536}, + "Tokyo": {"latencyMs": 236.455097}, + "Toronto": {"latencyMs": 118.691958}, + "Warsaw": {"latencyMs": 27.970101} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:37Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:37Z", + "hostname": "prod-db", + "id": "{device:prod-db}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:13:34Z", + "machineKey": "{machine:prod-db}", + "name": "prod-db.tail78f774.ts.net", + "nodeId": "{device:prod-db}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:J-prod-db}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:55acf0519cbbc4d30dae8b1365637d412e3598542a71e4d6cc0cd10df6e3264e", + "updateAvailable": true, + "user": "odin@example.com" + }, + "offset_ms": 2002 + }] + }, { + "name": "T5", + "at": "2026-10-17T19:13:34.444138741Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:mixed}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.81.212.117", "fd7a:115c:a1e0::d628:d476"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:48635", + "192.0.2.1:48635", + "198.51.100.2:48635", + "198.51.100.3:48635" + ], "latency": { + "Amsterdam": {"latencyMs": 18.068428, "preferred": true}, + "Ashburn": {"latencyMs": 96.19809599999999}, + "Bengaluru": {"latencyMs": 149.507434}, + "Chicago": {"latencyMs": 114.13907900000001}, + "Dallas": {"latencyMs": 124.923851}, + "Denver": {"latencyMs": 137.865181}, + "Dubai": {"latencyMs": 118.653979}, + "Frankfurt": {"latencyMs": 19.332169999999998}, + "Helsinki": {"latencyMs": 35.860916}, + "Hong Kong": {"latencyMs": 205.890913}, + "Honolulu": {"latencyMs": 210.567951}, + "Johannesburg": {"latencyMs": 177.31955699999997}, + "London": {"latencyMs": 19.720675}, + "Los Angeles": {"latencyMs": 147.24026700000002}, + "Madrid": {"latencyMs": 34.874328000000006}, + "Miami": {"latencyMs": 118.868635}, + "Nairobi": {"latencyMs": 167.794918}, + "New York City": {"latencyMs": 90.916794}, + "Nuremberg": {"latencyMs": 26.556009}, + "Paris": {"latencyMs": 19.928114}, + "San Francisco": {"latencyMs": 150.087885}, + "Seattle": {"latencyMs": 146.148653}, + "Singapore": {"latencyMs": 174.201584}, + "Tokyo": {"latencyMs": 233.36791000000002}, + "Toronto": {"latencyMs": 120.936096}, + "Warsaw": {"latencyMs": 27.077673} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:40Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:40Z", + "hostname": "mixed", + "id": "{device:mixed}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:13:34Z", + "machineKey": "{machine:mixed}", + "name": "mixed.tail78f774.ts.net", + "nodeId": "{device:mixed}", + "nodeKey": "{nodekey:3}", + "oauthClientId": "{key:J-mixed}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci", "tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:1c880990870d2389000522ed85d8ada7f750867ba3d7bf2dfb7f337b4a76c5f4", + "updateAvailable": true, + "user": "odin@example.com" + } + }, { + "kind": "api", + "principal": "token:C-core", + "method": "POST", + "path": "/device/{device:mixed}/tags", + "header": {"Content-Type": "application/json"}, + "body": {"tags": ["tag:ci"]}, + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "message": "cannot remove current tags: requested tags [tag:ci tag:prod] are invalid or not permitted" + }, + "offset_ms": 17 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:mixed}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.81.212.117", "fd7a:115c:a1e0::d628:d476"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:48635", + "192.0.2.1:48635", + "198.51.100.2:48635", + "198.51.100.3:48635" + ], "latency": { + "Amsterdam": {"latencyMs": 18.068428, "preferred": true}, + "Ashburn": {"latencyMs": 96.19809599999999}, + "Bengaluru": {"latencyMs": 149.507434}, + "Chicago": {"latencyMs": 114.13907900000001}, + "Dallas": {"latencyMs": 124.923851}, + "Denver": {"latencyMs": 137.865181}, + "Dubai": {"latencyMs": 118.653979}, + "Frankfurt": {"latencyMs": 19.332169999999998}, + "Helsinki": {"latencyMs": 35.860916}, + "Hong Kong": {"latencyMs": 205.890913}, + "Honolulu": {"latencyMs": 210.567951}, + "Johannesburg": {"latencyMs": 177.31955699999997}, + "London": {"latencyMs": 19.720675}, + "Los Angeles": {"latencyMs": 147.24026700000002}, + "Madrid": {"latencyMs": 34.874328000000006}, + "Miami": {"latencyMs": 118.868635}, + "Nairobi": {"latencyMs": 167.794918}, + "New York City": {"latencyMs": 90.916794}, + "Nuremberg": {"latencyMs": 26.556009}, + "Paris": {"latencyMs": 19.928114}, + "San Francisco": {"latencyMs": 150.087885}, + "Seattle": {"latencyMs": 146.148653}, + "Singapore": {"latencyMs": 174.201584}, + "Tokyo": {"latencyMs": 233.36791000000002}, + "Toronto": {"latencyMs": 120.936096}, + "Warsaw": {"latencyMs": 27.077673} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:40Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:40Z", + "hostname": "mixed", + "id": "{device:mixed}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:13:36Z", + "machineKey": "{machine:mixed}", + "name": "mixed.tail78f774.ts.net", + "nodeId": "{device:mixed}", + "nodeKey": "{nodekey:3}", + "oauthClientId": "{key:J-mixed}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci", "tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:1c880990870d2389000522ed85d8ada7f750867ba3d7bf2dfb7f337b4a76c5f4", + "updateAvailable": true, + "user": "odin@example.com" + }, + "offset_ms": 2006 + }] + }, { + "name": "T6", + "at": "2026-10-17T19:13:36.474173668Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:managed}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.77.73.61", "fd7a:115c:a1e0::28:493e"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:59663", + "192.0.2.1:59663", + "198.51.100.2:59663", + "198.51.100.3:59663" + ], "latency": { + "Amsterdam": {"latencyMs": 13.965559, "preferred": true}, + "Ashburn": {"latencyMs": 94.127739}, + "Bengaluru": {"latencyMs": 138.34985799999998}, + "Chicago": {"latencyMs": 113.006907}, + "Dallas": {"latencyMs": 126.38182}, + "Denver": {"latencyMs": 135.45923000000002}, + "Dubai": {"latencyMs": 116.222156}, + "Frankfurt": {"latencyMs": 17.592974}, + "Helsinki": {"latencyMs": 36.431022}, + "Hong Kong": {"latencyMs": 195.586638}, + "Honolulu": {"latencyMs": 220.76305299999999}, + "Johannesburg": {"latencyMs": 208.210431}, + "London": {"latencyMs": 16.463158}, + "Los Angeles": {"latencyMs": 144.57808}, + "Madrid": {"latencyMs": 34.533197}, + "Miami": {"latencyMs": 119.98886}, + "Nairobi": {"latencyMs": 174.307404}, + "New York City": {"latencyMs": 88.554272}, + "Nuremberg": {"latencyMs": 23.252912000000002}, + "Paris": {"latencyMs": 19.625595}, + "San Francisco": {"latencyMs": 151.129391}, + "Seattle": {"latencyMs": 147.061526}, + "Singapore": {"latencyMs": 173.424376}, + "Tokyo": {"latencyMs": 236.53889}, + "Toronto": {"latencyMs": 119.521553}, + "Warsaw": {"latencyMs": 28.692609} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:42Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:42Z", + "hostname": "managed", + "id": "{device:managed}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:13:36Z", + "machineKey": "{machine:managed}", + "name": "managed.tail78f774.ts.net", + "nodeId": "{device:managed}", + "nodeKey": "{nodekey:4}", + "oauthClientId": "{key:J-managed}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:managed"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:dc81cecc1b327b3f48471c4cdc9513c8388d7feabc734fbeedf63e3eb199b746", + "updateAvailable": true, + "user": "odin@example.com" + } + }, { + "kind": "api", + "principal": "token:C-core", + "method": "POST", + "path": "/device/{device:managed}/tags", + "header": {"Content-Type": "application/json"}, + "body": {"tags": ["tag:ci"]}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": null, + "offset_ms": 18 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:managed}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.77.73.61", "fd7a:115c:a1e0::28:493e"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:59663", + "192.0.2.1:59663", + "198.51.100.2:59663", + "198.51.100.3:59663" + ], "latency": { + "Amsterdam": {"latencyMs": 13.965559, "preferred": true}, + "Ashburn": {"latencyMs": 94.127739}, + "Bengaluru": {"latencyMs": 138.34985799999998}, + "Chicago": {"latencyMs": 113.006907}, + "Dallas": {"latencyMs": 126.38182}, + "Denver": {"latencyMs": 135.45923000000002}, + "Dubai": {"latencyMs": 116.222156}, + "Frankfurt": {"latencyMs": 17.592974}, + "Helsinki": {"latencyMs": 36.431022}, + "Hong Kong": {"latencyMs": 195.586638}, + "Honolulu": {"latencyMs": 220.76305299999999}, + "Johannesburg": {"latencyMs": 208.210431}, + "London": {"latencyMs": 16.463158}, + "Los Angeles": {"latencyMs": 144.57808}, + "Madrid": {"latencyMs": 34.533197}, + "Miami": {"latencyMs": 119.98886}, + "Nairobi": {"latencyMs": 174.307404}, + "New York City": {"latencyMs": 88.554272}, + "Nuremberg": {"latencyMs": 23.252912000000002}, + "Paris": {"latencyMs": 19.625595}, + "San Francisco": {"latencyMs": 151.129391}, + "Seattle": {"latencyMs": 147.061526}, + "Singapore": {"latencyMs": 173.424376}, + "Tokyo": {"latencyMs": 236.53889}, + "Toronto": {"latencyMs": 119.521553}, + "Warsaw": {"latencyMs": 28.692609} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:42Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:42Z", + "hostname": "managed", + "id": "{device:managed}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:13:38Z", + "machineKey": "{machine:managed}", + "name": "managed.tail78f774.ts.net", + "nodeId": "{device:managed}", + "nodeKey": "{nodekey:4}", + "oauthClientId": "{key:J-managed}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:dc81cecc1b327b3f48471c4cdc9513c8388d7feabc734fbeedf63e3eb199b746", + "updateAvailable": true, + "user": "odin@example.com" + }, + "offset_ms": 1995 + }] + }, { + "name": "T7", + "at": "2026-10-17T19:13:38.487023516Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:ci-runner}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.122.9.101", "fd7a:115c:a1e0::d628:966"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:35808", + "192.0.2.1:35808", + "198.51.100.2:35808", + "198.51.100.3:35808" + ], "latency": { + "Amsterdam": {"latencyMs": 10.266454, "preferred": true}, + "Ashburn": {"latencyMs": 92.581656}, + "Bengaluru": {"latencyMs": 137.984551}, + "Chicago": {"latencyMs": 113.018518}, + "Dallas": {"latencyMs": 123.37870500000001}, + "Denver": {"latencyMs": 137.075862}, + "Dubai": {"latencyMs": 117.316326}, + "Frankfurt": {"latencyMs": 16.488429999999997}, + "Helsinki": {"latencyMs": 37.343756}, + "Hong Kong": {"latencyMs": 194.99831700000001}, + "Honolulu": {"latencyMs": 199.493277}, + "Johannesburg": {"latencyMs": 191.756567}, + "London": {"latencyMs": 16.520744}, + "Los Angeles": {"latencyMs": 143.220516}, + "Madrid": {"latencyMs": 32.898115999999995}, + "Miami": {"latencyMs": 119.222487}, + "Nairobi": {"latencyMs": 161.311658}, + "New York City": {"latencyMs": 86.312164}, + "Nuremberg": {"latencyMs": 25.476104}, + "Paris": {"latencyMs": 17.609609}, + "San Francisco": {"latencyMs": 151.56289}, + "Seattle": {"latencyMs": 146.214167}, + "Singapore": {"latencyMs": 166.590768}, + "Tokyo": {"latencyMs": 244.39915100000002}, + "Toronto": {"latencyMs": 119.302391}, + "Warsaw": {"latencyMs": 28.606751} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:35Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:35Z", + "hostname": "ci-runner", + "id": "{device:ci-runner}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:13:38Z", + "machineKey": "{machine:ci-runner}", + "name": "ci-runner.tail78f774.ts.net", + "nodeId": "{device:ci-runner}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:J-ci-runner}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:01cd85d3485f25e43e152855ec93ae76b56f9656ba54dab7d4ffe4c82ecf10cc", + "updateAvailable": true, + "user": "odin@example.com" + } + }, { + "kind": "api", + "principal": "token:C-core", + "method": "POST", + "path": "/device/{device:ci-runner}/tags", + "header": {"Content-Type": "application/json"}, + "body": {"tags": ["tag:managed"]}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": null, + "offset_ms": 20 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:ci-runner}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.122.9.101", "fd7a:115c:a1e0::d628:966"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:35808", + "192.0.2.1:35808", + "198.51.100.2:35808", + "198.51.100.3:35808" + ], "latency": { + "Amsterdam": {"latencyMs": 10.266454, "preferred": true}, + "Ashburn": {"latencyMs": 92.581656}, + "Bengaluru": {"latencyMs": 137.984551}, + "Chicago": {"latencyMs": 113.018518}, + "Dallas": {"latencyMs": 123.37870500000001}, + "Denver": {"latencyMs": 137.075862}, + "Dubai": {"latencyMs": 117.316326}, + "Frankfurt": {"latencyMs": 16.488429999999997}, + "Helsinki": {"latencyMs": 37.343756}, + "Hong Kong": {"latencyMs": 194.99831700000001}, + "Honolulu": {"latencyMs": 199.493277}, + "Johannesburg": {"latencyMs": 191.756567}, + "London": {"latencyMs": 16.520744}, + "Los Angeles": {"latencyMs": 143.220516}, + "Madrid": {"latencyMs": 32.898115999999995}, + "Miami": {"latencyMs": 119.222487}, + "Nairobi": {"latencyMs": 161.311658}, + "New York City": {"latencyMs": 86.312164}, + "Nuremberg": {"latencyMs": 25.476104}, + "Paris": {"latencyMs": 17.609609}, + "San Francisco": {"latencyMs": 151.56289}, + "Seattle": {"latencyMs": 146.214167}, + "Singapore": {"latencyMs": 166.590768}, + "Tokyo": {"latencyMs": 244.39915100000002}, + "Toronto": {"latencyMs": 119.302391}, + "Warsaw": {"latencyMs": 28.606751} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:35Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:35Z", + "hostname": "ci-runner", + "id": "{device:ci-runner}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:13:40Z", + "machineKey": "{machine:ci-runner}", + "name": "ci-runner.tail78f774.ts.net", + "nodeId": "{device:ci-runner}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:J-ci-runner}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:managed"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:01cd85d3485f25e43e152855ec93ae76b56f9656ba54dab7d4ffe4c82ecf10cc", + "updateAvailable": true, + "user": "odin@example.com" + }, + "offset_ms": 2000 + }] + }, { + "name": "T8", + "at": "2026-10-17T19:13:40.505202956Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:laptop}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.92.45.78", "fd7a:115c:a1e0::c728:2d4f"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:56751", + "192.0.2.1:56751", + "198.51.100.2:56751", + "198.51.100.3:56751" + ], "latency": { + "Amsterdam": {"latencyMs": 11.845241, "preferred": true}, + "Ashburn": {"latencyMs": 90.23803099999999}, + "Bengaluru": {"latencyMs": 213.357249}, + "Chicago": {"latencyMs": 111.021219}, + "Dallas": {"latencyMs": 126.10964899999999}, + "Denver": {"latencyMs": 137.747173}, + "Dubai": {"latencyMs": 116.26565699999999}, + "Frankfurt": {"latencyMs": 17.212332}, + "Helsinki": {"latencyMs": 36.390555}, + "Hong Kong": {"latencyMs": 195.078359}, + "Honolulu": {"latencyMs": 217.987536}, + "Johannesburg": {"latencyMs": 175.97738600000002}, + "London": {"latencyMs": 16.050832}, + "Los Angeles": {"latencyMs": 143.354849}, + "Madrid": {"latencyMs": 32.579556000000004}, + "Miami": {"latencyMs": 116.540298}, + "Nairobi": {"latencyMs": 161.03943}, + "New York City": {"latencyMs": 89.58474600000001}, + "Nuremberg": {"latencyMs": 26.428724}, + "Paris": {"latencyMs": 18.648634}, + "San Francisco": {"latencyMs": 149.201699}, + "Seattle": {"latencyMs": 147.72831}, + "Singapore": {"latencyMs": 181.545976}, + "Tokyo": {"latencyMs": 233.187819}, + "Toronto": {"latencyMs": 119.212352}, + "Warsaw": {"latencyMs": 28.524252999999998} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:44Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:44Z", + "hostname": "laptop", + "id": "{device:laptop}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-17T19:13:41Z", + "machineKey": "{machine:laptop}", + "name": "laptop.tail78f774.ts.net", + "nodeId": "{device:laptop}", + "nodeKey": "{nodekey:5}", + "oauthClientId": "{key:J-laptop}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tailnetLockError": "", + "tailnetLockKey": "nlpub:a62f8250a62bf17095189ebf24c4616c8a5a7a30b2b5c38e622f45f03657d0ca", + "updateAvailable": true, + "user": "odin@example.com" + } + }, { + "kind": "api", + "principal": "token:C-core", + "method": "POST", + "path": "/device/{device:laptop}/tags", + "header": {"Content-Type": "application/json"}, + "body": {"tags": ["tag:ci"]}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": null, + "offset_ms": 16 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:laptop}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.92.45.78", "fd7a:115c:a1e0::c728:2d4f"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:56751", + "192.0.2.1:56751", + "198.51.100.2:56751", + "198.51.100.3:56751" + ], "latency": { + "Amsterdam": {"latencyMs": 11.845241, "preferred": true}, + "Ashburn": {"latencyMs": 90.23803099999999}, + "Bengaluru": {"latencyMs": 213.357249}, + "Chicago": {"latencyMs": 111.021219}, + "Dallas": {"latencyMs": 126.10964899999999}, + "Denver": {"latencyMs": 137.747173}, + "Dubai": {"latencyMs": 116.26565699999999}, + "Frankfurt": {"latencyMs": 17.212332}, + "Helsinki": {"latencyMs": 36.390555}, + "Hong Kong": {"latencyMs": 195.078359}, + "Honolulu": {"latencyMs": 217.987536}, + "Johannesburg": {"latencyMs": 175.97738600000002}, + "London": {"latencyMs": 16.050832}, + "Los Angeles": {"latencyMs": 143.354849}, + "Madrid": {"latencyMs": 32.579556000000004}, + "Miami": {"latencyMs": 116.540298}, + "Nairobi": {"latencyMs": 161.03943}, + "New York City": {"latencyMs": 89.58474600000001}, + "Nuremberg": {"latencyMs": 26.428724}, + "Paris": {"latencyMs": 18.648634}, + "San Francisco": {"latencyMs": 149.201699}, + "Seattle": {"latencyMs": 147.72831}, + "Singapore": {"latencyMs": 181.545976}, + "Tokyo": {"latencyMs": 233.187819}, + "Toronto": {"latencyMs": 119.212352}, + "Warsaw": {"latencyMs": 28.524252999999998} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:11:44Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:11:44Z", + "hostname": "laptop", + "id": "{device:laptop}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-17T19:13:43Z", + "machineKey": "{machine:laptop}", + "name": "laptop.tail78f774.ts.net", + "nodeId": "{device:laptop}", + "nodeKey": "{nodekey:5}", + "oauthClientId": "{key:J-laptop}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:a62f8250a62bf17095189ebf24c4616c8a5a7a30b2b5c38e622f45f03657d0ca", + "updateAvailable": true, + "user": "odin@example.com" + }, + "offset_ms": 2002 + }] + }, { + "name": "D0", + "at": "2026-10-17T19:13:42.544228957Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-akread", + "principal": "token:C-akread", + "status": 200, + "response": {"expires_in": 3600, "scope": "auth_keys:read", "token_type": "Bearer"} + }, { + "kind": "api", + "principal": "token:C-akread", + "method": "GET", + "path": "/tailnet/-/keys", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"keys": null}, + "offset_ms": 1981 + }, { + "kind": "api", + "principal": "token:C-akread", + "method": "GET", + "path": "/tailnet/-/keys?all=true", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"keys": [{ + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci"] + }}}, + "created": "2026-10-17T19:12:12Z", + "description": "tscap-saasprobe K-ci", + "expires": "2026-10-17T20:12:12Z", + "expirySeconds": 3600, + "id": "{key:K-ci}", + "keyType": "auth", + "userId": "{unmatched:1}" + }, { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:prod"] + }}}, + "created": "2026-10-17T19:12:14Z", + "description": "tscap-saasprobe K-prod", + "expires": "2026-10-17T20:12:14Z", + "expirySeconds": 3600, + "id": "{key:K-prod}", + "keyType": "auth", + "userId": "{unmatched:1}" + }, { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci", "tag:prod"] + }}}, + "created": "2026-10-17T19:12:16Z", + "description": "tscap-saasprobe K-mixed", + "expires": "2026-10-17T20:12:16Z", + "expirySeconds": 3600, + "id": "{key:K-mixed}", + "keyType": "auth", + "userId": "{unmatched:1}" + }, { + "capabilities": { + "devices": {"create": {"ephemeral": false, "preauthorized": true, "reusable": true}} + }, + "created": "2026-10-17T19:12:18Z", + "description": "tscap-saasprobe K-user", + "expires": "2026-10-17T20:12:18Z", + "expirySeconds": 3600, + "id": "{key:K-user}", + "keyType": "auth", + "userId": "{unmatched:1}" + }]}, + "offset_ms": 1999 + }, { + "kind": "token", + "client": "C-okread", + "principal": "token:C-okread", + "status": 200, + "response": {"expires_in": 3600, "scope": "oauth_keys:read", "token_type": "Bearer"}, + "offset_ms": 2018 + }, { + "kind": "api", + "principal": "token:C-okread", + "method": "GET", + "path": "/tailnet/-/keys", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"keys": [{ + "created": "2026-10-17T19:11:49Z", + "description": "tscap-saasprobe C-all", + "id": "{client:C-all}", + "keyType": "client", + "scopes": ["all"], + "tags": ["tag:ci"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:11:51Z", + "description": "tscap-saasprobe C-core", + "id": "{client:C-core}", + "keyType": "client", + "scopes": ["devices:core"], + "tags": ["tag:ci"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:11:53Z", + "description": "tscap-saasprobe C-coreread", + "id": "{client:C-coreread}", + "keyType": "client", + "scopes": ["devices:core:read"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:11:55Z", + "description": "tscap-saasprobe C-routesread", + "id": "{client:C-routesread}", + "keyType": "client", + "scopes": ["devices:routes:read"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:11:58Z", + "description": "tscap-saasprobe C-bothread", + "id": "{client:C-bothread}", + "keyType": "client", + "scopes": ["devices:core:read", "devices:routes:read"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:12:00Z", + "description": "tscap-saasprobe C-ak", + "id": "{client:C-ak}", + "keyType": "client", + "scopes": ["auth_keys"], + "tags": ["tag:ci"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:12:02Z", + "description": "tscap-saasprobe C-akread", + "id": "{client:C-akread}", + "keyType": "client", + "scopes": ["auth_keys:read"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:12:04Z", + "description": "tscap-saasprobe C-ok", + "id": "{client:C-ok}", + "keyType": "client", + "scopes": ["oauth_keys"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:12:06Z", + "description": "tscap-saasprobe C-okread", + "id": "{client:C-okread}", + "keyType": "client", + "scopes": ["oauth_keys:read"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:12:08Z", + "description": "tscap-saasprobe C-parent", + "id": "{client:C-parent}", + "keyType": "client", + "scopes": ["auth_keys", "oauth_keys"], + "tags": ["tag:ci"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:12:10Z", + "description": "tscap-saasprobe C-spare", + "id": "{client:C-spare}", + "keyType": "client", + "scopes": ["all"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:12:52Z", + "description": "tscap-saasprobe C-pf", + "id": "{client:C-pf}", + "keyType": "client", + "scopes": ["policy_file"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:13:08Z", + "description": "tscap-saasprobe C-all-1", + "id": "{client:C-all-1}", + "keyType": "client", + "scopes": ["all"], + "tags": ["tag:ci"] + }, { + "created": "2026-10-17T19:13:10Z", + "description": "tscap-saasprobe C-all-2", + "id": "{client:C-all-2}", + "keyType": "client", + "scopes": ["all"] + }, { + "created": "2026-10-17T19:13:12Z", + "description": "tscap-saasprobe C-all-3", + "id": "{client:C-all-3}", + "keyType": "client", + "scopes": ["auth_keys", "oauth_keys"], + "tags": ["tag:ci"] + }]}, + "offset_ms": 3999 + }, { + "kind": "api", + "principal": "token:C-okread", + "method": "GET", + "path": "/tailnet/-/keys?all=true", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"keys": [{ + "created": "2026-10-17T19:11:49Z", + "description": "tscap-saasprobe C-all", + "id": "{client:C-all}", + "keyType": "client", + "scopes": ["all"], + "tags": ["tag:ci"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:11:51Z", + "description": "tscap-saasprobe C-core", + "id": "{client:C-core}", + "keyType": "client", + "scopes": ["devices:core"], + "tags": ["tag:ci"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:11:53Z", + "description": "tscap-saasprobe C-coreread", + "id": "{client:C-coreread}", + "keyType": "client", + "scopes": ["devices:core:read"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:11:55Z", + "description": "tscap-saasprobe C-routesread", + "id": "{client:C-routesread}", + "keyType": "client", + "scopes": ["devices:routes:read"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:11:58Z", + "description": "tscap-saasprobe C-bothread", + "id": "{client:C-bothread}", + "keyType": "client", + "scopes": ["devices:core:read", "devices:routes:read"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:12:00Z", + "description": "tscap-saasprobe C-ak", + "id": "{client:C-ak}", + "keyType": "client", + "scopes": ["auth_keys"], + "tags": ["tag:ci"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:12:02Z", + "description": "tscap-saasprobe C-akread", + "id": "{client:C-akread}", + "keyType": "client", + "scopes": ["auth_keys:read"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:12:04Z", + "description": "tscap-saasprobe C-ok", + "id": "{client:C-ok}", + "keyType": "client", + "scopes": ["oauth_keys"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:12:06Z", + "description": "tscap-saasprobe C-okread", + "id": "{client:C-okread}", + "keyType": "client", + "scopes": ["oauth_keys:read"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:12:08Z", + "description": "tscap-saasprobe C-parent", + "id": "{client:C-parent}", + "keyType": "client", + "scopes": ["auth_keys", "oauth_keys"], + "tags": ["tag:ci"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:12:10Z", + "description": "tscap-saasprobe C-spare", + "id": "{client:C-spare}", + "keyType": "client", + "scopes": ["all"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:12:52Z", + "description": "tscap-saasprobe C-pf", + "id": "{client:C-pf}", + "keyType": "client", + "scopes": ["policy_file"], + "userId": "{unmatched:1}" + }, { + "created": "2026-10-17T19:13:08Z", + "description": "tscap-saasprobe C-all-1", + "id": "{client:C-all-1}", + "keyType": "client", + "scopes": ["all"], + "tags": ["tag:ci"] + }, { + "created": "2026-10-17T19:13:10Z", + "description": "tscap-saasprobe C-all-2", + "id": "{client:C-all-2}", + "keyType": "client", + "scopes": ["all"] + }, { + "created": "2026-10-17T19:13:12Z", + "description": "tscap-saasprobe C-all-3", + "id": "{client:C-all-3}", + "keyType": "client", + "scopes": ["auth_keys", "oauth_keys"], + "tags": ["tag:ci"] + }]}, + "offset_ms": 4017 + }, { + "kind": "token", + "client": "C-ak", + "principal": "token:C-ak", + "status": 200, + "response": { + "expires_in": 3600, + "scope": "auth_keys", + "tags": "tag:ci", + "token_type": "Bearer" + }, + "offset_ms": 4036 + }, { + "kind": "api", + "principal": "token:C-ak", + "method": "GET", + "path": "/tailnet/-/keys/{key:K-prod}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:prod"] + }}}, + "created": "2026-10-17T19:12:14Z", + "description": "tscap-saasprobe K-prod", + "expires": "2026-10-17T20:12:14Z", + "expirySeconds": 3600, + "id": "{key:K-prod}", + "keyType": "auth", + "userId": "{unmatched:1}" + }, + "offset_ms": 6017 + }, { + "kind": "api", + "principal": "token:C-ak", + "method": "GET", + "path": "/tailnet/-/keys/{key:K-user}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": { + "devices": {"create": {"ephemeral": false, "preauthorized": true, "reusable": true}} + }, + "created": "2026-10-17T19:12:18Z", + "description": "tscap-saasprobe K-user", + "expires": "2026-10-17T20:12:18Z", + "expirySeconds": 3600, + "id": "{key:K-user}", + "keyType": "auth", + "userId": "{unmatched:1}" + }, + "offset_ms": 6034 + }] + }, { + "name": "D1", + "at": "2026-10-17T19:13:48.595418149Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "token:C-akread", + "method": "DELETE", + "path": "/tailnet/-/keys/{key:K-ci}", + "status": 403, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "message": "calling actor does not have enough permissions to perform this function" + } + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/keys/{key:K-ci}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci"] + }}}, + "created": "2026-10-17T19:12:12Z", + "description": "tscap-saasprobe K-ci", + "expires": "2026-10-17T20:12:12Z", + "expirySeconds": 3600, + "id": "{key:K-ci}", + "keyType": "auth", + "userId": "{unmatched:1}" + }, + "offset_ms": 1985 + }] + }, { + "name": "D2", + "at": "2026-10-17T19:13:50.597827359Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "token:C-ak", + "method": "DELETE", + "path": "/tailnet/-/keys/{key:K-prod}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": null + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/keys/{key:K-prod}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:prod"] + }}}, + "created": "2026-10-17T19:12:14Z", + "description": "tscap-saasprobe K-prod", + "expires": "2026-10-17T20:12:14Z", + "expirySeconds": 3600, + "id": "{key:K-prod}", + "invalid": true, + "keyType": "auth", + "revoked": "2026-10-17T19:13:53Z", + "userId": "{unmatched:1}" + }, + "offset_ms": 1999 + }] + }, { + "name": "D3", + "at": "2026-10-17T19:13:52.614741621Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "token:C-ak", + "method": "DELETE", + "path": "/tailnet/-/keys/{key:K-user}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": null + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/keys/{key:K-user}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": { + "devices": {"create": {"ephemeral": false, "preauthorized": true, "reusable": true}} + }, + "created": "2026-10-17T19:12:18Z", + "description": "tscap-saasprobe K-user", + "expires": "2026-10-17T20:12:18Z", + "expirySeconds": 3600, + "id": "{key:K-user}", + "invalid": true, + "keyType": "auth", + "revoked": "2026-10-17T19:13:55Z", + "userId": "{unmatched:1}" + }, + "offset_ms": 1999 + }] + }, { + "name": "D4", + "at": "2026-10-17T19:13:54.630867812Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "token:C-ak", + "method": "DELETE", + "path": "/tailnet/-/keys/{key:K-mixed}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": null + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/keys/{key:K-mixed}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci", "tag:prod"] + }}}, + "created": "2026-10-17T19:12:16Z", + "description": "tscap-saasprobe K-mixed", + "expires": "2026-10-17T20:12:16Z", + "expirySeconds": 3600, + "id": "{key:K-mixed}", + "invalid": true, + "keyType": "auth", + "revoked": "2026-10-17T19:13:57Z", + "userId": "{unmatched:1}" + }, + "offset_ms": 2002 + }] + }, { + "name": "D5", + "at": "2026-10-17T19:13:56.652689895Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "token:C-ak", + "method": "DELETE", + "path": "/tailnet/-/keys/{key:K-ci}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": null + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/keys/{key:K-ci}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci"] + }}}, + "created": "2026-10-17T19:12:12Z", + "description": "tscap-saasprobe K-ci", + "expires": "2026-10-17T20:12:12Z", + "expirySeconds": 3600, + "id": "{key:K-ci}", + "invalid": true, + "keyType": "auth", + "revoked": "2026-10-17T19:13:59Z", + "userId": "{unmatched:1}" + }, + "offset_ms": 2039 + }] + }, { + "name": "D6", + "at": "2026-10-17T19:13:58.708421161Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "token:C-ak", + "method": "DELETE", + "path": "/tailnet/-/keys/{client:C-spare}", + "status": 404, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "not found"} + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/keys/{client:C-spare}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:12:10Z", + "description": "tscap-saasprobe C-spare", + "id": "{client:C-spare}", + "keyType": "client", + "scopes": ["all"], + "userId": "{unmatched:1}" + }, + "offset_ms": 1999 + }] + }, { + "name": "D7", + "at": "2026-10-17T19:14:00.724774572Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-ok", + "principal": "token:C-ok", + "status": 200, + "response": {"expires_in": 3600, "scope": "oauth_keys", "token_type": "Bearer"} + }, { + "kind": "api", + "principal": "token:C-ok", + "method": "DELETE", + "path": "/tailnet/-/keys/{client:C-spare}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": null, + "offset_ms": 2003 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/keys/{client:C-spare}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:12:10Z", + "description": "tscap-saasprobe C-spare", + "id": "{client:C-spare}", + "invalid": true, + "keyType": "client", + "revoked": "2026-10-17T19:14:05Z", + "scopes": ["all"], + "userId": "{unmatched:1}" + }, + "offset_ms": 4020 + }, { + "kind": "token", + "client": "C-spare", + "principal": "token:C-spare/D7", + "status": 401, + "response": {"message": "API token invalid"}, + "offset_ms": 4038 + }, { + "kind": "api", + "principal": "token:C-spare", + "method": "GET", + "path": "/tailnet/-/devices", + "status": 401, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "API token invalid"}, + "offset_ms": 6038 + }] + }, { + "name": "B1", + "at": "2026-10-17T19:14:06.779511382Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-parent", + "principal": "token:C-parent", + "status": 200, + "response": { + "expires_in": 3600, + "scope": "auth_keys oauth_keys", + "tags": "tag:ci", + "token_type": "Bearer" + } + }, { + "kind": "api", + "key": "K-child", + "principal": "token:C-parent", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci"] + }}}, "description": "tscap-saasprobe K-child", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci"] + }}}, + "created": "2026-10-17T19:14:11Z", + "description": "tscap-saasprobe K-child", + "expires": "2026-10-17T20:14:11Z", + "expirySeconds": 3600, + "id": "{key:K-child}", + "keyType": "auth" + }, + "offset_ms": 2002 + }] + }, { + "name": "B2", + "at": "2026-10-17T19:14:10.800801321Z", + "result": "observed", + "actions": [{ + "kind": "api", + "client": "C-child", + "principal": "token:C-parent", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": { + "description": "tscap-saasprobe C-child", + "keyType": "client", + "scopes": ["auth_keys"], + "tags": ["tag:ci"] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:14:13Z", + "description": "tscap-saasprobe C-child", + "id": "{client:C-child}", + "keyType": "client", + "scopes": ["auth_keys"], + "tags": ["tag:ci"] + } + }] + }, { + "name": "B3", + "at": "2026-10-17T19:14:12.819936464Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-child", + "principal": "token:C-child", + "status": 200, + "response": { + "expires_in": 3600, + "scope": "auth_keys", + "tags": "tag:ci", + "token_type": "Bearer" + } + }] + }, { + "name": "B4", + "at": "2026-10-17T19:14:14.837736259Z", + "result": "observed", + "actions": [{ + "kind": "join", + "node": "before", + "key": "K-child", + "request_tags": ["tag:ci"], + "hostname": "before", + "offset_ms": 148 + }], + "captures": {"before": { + "packet_filter_rules": [{"SrcIPs": [ + "10.42.0.0/16", + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "10.42.0.0/16", + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 6358029555998068, + "StableID": "n1wDpzeZer11CNTRL", + "Name": "before.tail78f774.ts.net.", + "User": 6358029555998068, + "Key": "nodekey:6260e3205c63ce52d1fac8c2508ff600f4aa3c0217862a91f52a30980333bb43", + "DiscoKey": "discokey:80ed448162e864d4bfb859acf22c58fe2ced10893de58703074976202e94696a", + "Addresses": ["100.115.187.67/32", "fd7a:115c:a1e0::328:bb44/128"], + "AllowedIPs": ["100.115.187.67/32", "fd7a:115c:a1e0::328:bb44/128"], + "Hostinfo": { + "Hostname": "before", + "RequestTags": ["tag:ci"], + "Services": [{"Proto": "peerapi-dns-proxy", "Port": 1}] + }, + "Created": "2026-10-17T19:14:15.192880101Z", + "Tags": ["tag:ci"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "before", + "ComputedNameWithHost": "before" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:6260e3205c63ce52d1fac8c2508ff600f4aa3c0217862a91f52a30980333bb43", + "MachineKey": "mkey:43a8b5038cd76b66b3fbe250e27f61f783141b2bc040c28ffecd1496c82fc24e", + "Peers": [{ + "ID": 3341264727064639, + "StableID": "nELpJoMG6T11CNTRL", + "Name": "ci-runner.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:821b5f12347c7191752f29075e6de0be324169ad46879564fd288021d6fa0965", + "DiscoKey": "discokey:9fa02ee3b1b8647f9132dd73482c460641565157553ef13336311ccc6a3a1047", + "Addresses": ["100.122.9.101/32", "fd7a:115c:a1e0::d628:966/128"], + "AllowedIPs": ["100.122.9.101/32", "fd7a:115c:a1e0::d628:966/128"], + "Endpoints": [ + "192.0.2.1:35808", + "198.51.100.1:35808", + "198.51.100.2:35808", + "198.51.100.3:35808" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "ci-runner", "Services": [ + {"Proto": "peerapi4", "Port": 39434}, + {"Proto": "peerapi6", "Port": 39434} + ]}, + "Created": "2026-10-17T19:11:35.442211365Z", + "Cap": 142, + "Tags": ["tag:managed"], + "Online": true, + "ComputedName": "ci-runner", + "ComputedNameWithHost": "ci-runner" + }, { + "ID": 7507593642133957, + "StableID": "nnoJckkCd121CNTRL", + "Name": "laptop.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:58b0defaa5956033743da2ab510fba3721e8cc19b896af7809c4665ec71c2d4e", + "KeyExpiry": "2027-04-15T19:11:43Z", + "DiscoKey": "discokey:4811774314788f1972c4aafb700145df274e6fe6852bcafde8825596aa004a55", + "Addresses": ["100.92.45.78/32", "fd7a:115c:a1e0::c728:2d4f/128"], + "AllowedIPs": ["100.92.45.78/32", "fd7a:115c:a1e0::c728:2d4f/128"], + "Endpoints": [ + "192.0.2.1:56751", + "198.51.100.1:56751", + "198.51.100.2:56751", + "198.51.100.3:56751" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "laptop", "Services": [ + {"Proto": "peerapi4", "Port": 47294}, + {"Proto": "peerapi6", "Port": 47294} + ]}, + "Created": "2026-10-17T19:11:43.683330084Z", + "Cap": 142, + "Tags": ["tag:ci"], + "Online": true, + "ComputedName": "laptop", + "ComputedNameWithHost": "laptop" + }, { + "ID": 2763643232453942, + "StableID": "nuERoqDfaN11CNTRL", + "Name": "managed.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:1f97b206962b0aa23bc6d481c708650242bdc45190420425dc5bd7be00cd493d", + "DiscoKey": "discokey:342ced2491b5b541494e9e9942825ed140d6b83226c418f02f995172f7cfd733", + "Addresses": ["100.77.73.61/32", "fd7a:115c:a1e0::28:493e/128"], + "AllowedIPs": ["100.77.73.61/32", "fd7a:115c:a1e0::28:493e/128"], + "Endpoints": [ + "192.0.2.1:59663", + "198.51.100.1:59663", + "198.51.100.2:59663", + "198.51.100.3:59663" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "managed", "Services": [ + {"Proto": "peerapi4", "Port": 65500}, + {"Proto": "peerapi6", "Port": 65500} + ]}, + "Created": "2026-10-17T19:11:41.661289426Z", + "Cap": 142, + "Tags": ["tag:ci"], + "Online": true, + "ComputedName": "managed", + "ComputedNameWithHost": "managed" + }, { + "ID": 8080604858439017, + "StableID": "nNKKcfni6621CNTRL", + "Name": "mixed.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a4dbb3de21b5d89016684ce8b54865376f057648a63dc76dcd0578d5d611d475", + "DiscoKey": "discokey:8d9996dea8092414997a38c016510f32ecf746d421a3e0c7d7d13bb29be08d5f", + "Addresses": ["100.81.212.117/32", "fd7a:115c:a1e0::d628:d476/128"], + "AllowedIPs": ["100.81.212.117/32", "fd7a:115c:a1e0::d628:d476/128"], + "Endpoints": [ + "192.0.2.1:48635", + "198.51.100.1:48635", + "198.51.100.2:48635", + "198.51.100.3:48635" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "mixed", "Services": [ + {"Proto": "peerapi4", "Port": 38973}, + {"Proto": "peerapi6", "Port": 38973} + ]}, + "Created": "2026-10-17T19:11:39.655915145Z", + "Cap": 142, + "Tags": ["tag:ci", "tag:prod"], + "Online": true, + "ComputedName": "mixed", + "ComputedNameWithHost": "mixed" + }, { + "ID": 4873069762449992, + "StableID": "nHP8sCH24f11CNTRL", + "Name": "prod-db.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:e8b87029574c00e7835e8e0ccd0968ce0f17cef1ea84e19935734e198674476c", + "DiscoKey": "discokey:69497d4c5dfe2af39dc936e0c4e9b9b0b5076fdbcf8597c112abfc37df77af46", + "Addresses": ["100.116.71.108/32", "fd7a:115c:a1e0::8628:476d/128"], + "AllowedIPs": ["100.116.71.108/32", "fd7a:115c:a1e0::8628:476d/128"], + "Endpoints": [ + "192.0.2.1:34401", + "198.51.100.1:34401", + "198.51.100.2:34401", + "198.51.100.3:34401" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "prod-db", "Services": [ + {"Proto": "peerapi4", "Port": 60719}, + {"Proto": "peerapi6", "Port": 60719} + ]}, + "Created": "2026-10-17T19:11:37.443945993Z", + "Cap": 142, + "Tags": ["tag:prod"], + "Online": true, + "ComputedName": "prod-db", + "ComputedNameWithHost": "prod-db" + }, { + "ID": 2300076859349604, + "StableID": "nBERpt7ixJ11CNTRL", + "Name": "router.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:6125c4ab086b0ca4ab32d981b91839951a916114cee64132244c96cdf6fe3153", + "DiscoKey": "discokey:6dd8818524be41bf022bdd0e74b1847ac1c6bbec14aa5913cd032c8564b4c150", + "Addresses": ["100.126.49.83/32", "fd7a:115c:a1e0::f628:3154/128"], + "AllowedIPs": ["100.126.49.83/32", "fd7a:115c:a1e0::f628:3154/128", "10.42.0.0/16"], + "Endpoints": [ + "192.0.2.1:41850", + "198.51.100.1:41850", + "198.51.100.2:41850", + "198.51.100.3:41850" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "router", "Services": [ + {"Proto": "peerapi4", "Port": 39860}, + {"Proto": "peerapi6", "Port": 39860} + ]}, + "Created": "2026-10-17T19:11:45.687647805Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.42.0.0/16"], + "Online": true, + "ComputedName": "router", + "ComputedNameWithHost": "router" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "10.42.0.0/16", + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "10.42.0.0/16", + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "6358029555998068": { + "ID": 6358029555998068, + "LoginName": "before.tail78f774.ts.net", + "DisplayName": "before" + }} + }, + "backend_state": "Running" + }}, + "register": {"before": [{ + "node_key": "{nodekey:7}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 162 + }]} + }, { + "name": "B5", + "at": "2026-10-17T19:14:17.796396212Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/keys/{key:K-child}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci"] + }}}, + "created": "2026-10-17T19:14:11Z", + "description": "tscap-saasprobe K-child", + "expires": "2026-10-17T20:14:11Z", + "expirySeconds": 3600, + "id": "{key:K-child}", + "keyType": "auth" + } + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/keys/{client:C-child}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:14:13Z", + "description": "tscap-saasprobe C-child", + "id": "{client:C-child}", + "keyType": "client", + "scopes": ["auth_keys"], + "tags": ["tag:ci"] + }, + "offset_ms": 17 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/keys/{client:C-parent}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:12:08Z", + "description": "tscap-saasprobe C-parent", + "id": "{client:C-parent}", + "keyType": "client", + "scopes": ["auth_keys", "oauth_keys"], + "tags": ["tag:ci"], + "userId": "{unmatched:1}" + }, + "offset_ms": 33 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:before}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.115.187.67", "fd7a:115c:a1e0::328:bb44"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:37628", + "192.0.2.1:37628", + "198.51.100.2:37628", + "198.51.100.3:37628" + ], "latency": { + "Amsterdam": {"latencyMs": 14.075776999999999, "preferred": true}, + "Ashburn": {"latencyMs": 100.013042}, + "Bengaluru": {"latencyMs": 139.24530800000002}, + "Chicago": {"latencyMs": 114.223455}, + "Dallas": {"latencyMs": 126.789566}, + "Denver": {"latencyMs": 139.733565}, + "Dubai": {"latencyMs": 116.424384}, + "Frankfurt": {"latencyMs": 16.103661}, + "Helsinki": {"latencyMs": 37.56565}, + "Hong Kong": {"latencyMs": 197.382541}, + "Honolulu": {"latencyMs": 208.620175}, + "Johannesburg": {"latencyMs": 212.81410400000001}, + "London": {"latencyMs": 15.489941}, + "Los Angeles": {"latencyMs": 143.327552}, + "Madrid": {"latencyMs": 42.764405}, + "Miami": {"latencyMs": 118.78058499999999}, + "Nairobi": {"latencyMs": 162.32407600000002}, + "New York City": {"latencyMs": 84.096796}, + "Nuremberg": {"latencyMs": 23.874993}, + "Paris": {"latencyMs": 20.593248000000003}, + "San Francisco": {"latencyMs": 163.342332}, + "Seattle": {"latencyMs": 148.45379}, + "Singapore": {"latencyMs": 179.505111}, + "Tokyo": {"latencyMs": 236.895477}, + "Toronto": {"latencyMs": 122.025274}, + "Warsaw": {"latencyMs": 35.041044} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:14:15Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:14:15Z", + "hostname": "before", + "id": "{device:before}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:14:18Z", + "machineKey": "{machine:before}", + "name": "before.tail78f774.ts.net", + "nodeId": "{device:before}", + "nodeKey": "{nodekey:7}", + "oauthClientId": "{client:C-parent}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:f705569de1c02fe298e6995891ccf19eb53d57f6f39f41d86f60602ee2afc88a", + "updateAvailable": true, + "user": "" + }, + "offset_ms": 50 + }] + }, { + "name": "B6", + "at": "2026-10-17T19:14:17.864158539Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "DELETE", + "path": "/tailnet/-/keys/{client:C-parent}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": null + }] + }, { + "name": "B7", + "at": "2026-10-17T19:14:17.881234426Z", + "result": "observed", + "actions": [{ + "kind": "token", + "client": "C-parent", + "principal": "token:C-parent/B7", + "status": 401, + "response": {"message": "API token invalid"} + }, { + "kind": "api", + "principal": "token:C-parent", + "method": "GET", + "path": "/tailnet/-/keys", + "status": 401, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "API token invalid"}, + "offset_ms": 2017 + }] + }, { + "name": "B8", + "at": "2026-10-17T19:14:19.914568413Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/keys/{key:K-child}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci"] + }}}, + "created": "2026-10-17T19:14:11Z", + "description": "tscap-saasprobe K-child", + "expires": "2026-10-17T20:14:11Z", + "expirySeconds": 3600, + "id": "{key:K-child}", + "keyType": "auth" + } + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/keys/{client:C-child}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "created": "2026-10-17T19:14:13Z", + "description": "tscap-saasprobe C-child", + "id": "{client:C-child}", + "keyType": "client", + "scopes": ["auth_keys"], + "tags": ["tag:ci"] + }, + "offset_ms": 17 + }] + }, { + "name": "B9", + "at": "2026-10-17T19:14:19.948746074Z", + "result": "observed", + "actions": [{ + "kind": "join", + "node": "joiner", + "key": "K-child", + "request_tags": ["tag:ci"], + "hostname": "joiner", + "offset_ms": 145 + }], + "captures": {"joiner": { + "packet_filter_rules": [{"SrcIPs": [ + "10.42.0.0/16", + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "10.42.0.0/16", + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 2456928377118214, + "StableID": "n529LrLkBL11CNTRL", + "Name": "joiner.tail78f774.ts.net.", + "User": 2456928377118214, + "Key": "nodekey:0c836b55459bac7f236e4c372f738f3ecedc89f81e8b8f35d87761f50f1dfd0a", + "DiscoKey": "discokey:58818fe7562cc550da3e140e1a82a82412c2c71fe6e341ec817ee91d98abcf17", + "Addresses": ["100.93.253.10/32", "fd7a:115c:a1e0::f28:fd0b/128"], + "AllowedIPs": ["100.93.253.10/32", "fd7a:115c:a1e0::f28:fd0b/128"], + "Hostinfo": { + "Hostname": "joiner", + "RequestTags": ["tag:ci"], + "Services": [{"Proto": "peerapi-dns-proxy", "Port": 1}] + }, + "Created": "2026-10-17T19:14:20.228579461Z", + "Tags": ["tag:ci"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "joiner", + "ComputedNameWithHost": "joiner" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:0c836b55459bac7f236e4c372f738f3ecedc89f81e8b8f35d87761f50f1dfd0a", + "MachineKey": "mkey:80535412e286b08b6c08f662de4ea73268473e44c3def6756fa921aa85484014", + "Peers": [{ + "ID": 6358029555998068, + "StableID": "n1wDpzeZer11CNTRL", + "Name": "before.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:6260e3205c63ce52d1fac8c2508ff600f4aa3c0217862a91f52a30980333bb43", + "DiscoKey": "discokey:80ed448162e864d4bfb859acf22c58fe2ced10893de58703074976202e94696a", + "Addresses": ["100.115.187.67/32", "fd7a:115c:a1e0::328:bb44/128"], + "AllowedIPs": ["100.115.187.67/32", "fd7a:115c:a1e0::328:bb44/128"], + "Endpoints": [ + "192.0.2.1:37628", + "198.51.100.1:37628", + "198.51.100.2:37628", + "198.51.100.3:37628" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "before", "Services": [ + {"Proto": "peerapi4", "Port": 59458}, + {"Proto": "peerapi6", "Port": 59458} + ]}, + "Created": "2026-10-17T19:14:15.192880101Z", + "Cap": 142, + "Tags": ["tag:ci"], + "Online": true, + "ComputedName": "before", + "ComputedNameWithHost": "before" + }, { + "ID": 3341264727064639, + "StableID": "nELpJoMG6T11CNTRL", + "Name": "ci-runner.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:821b5f12347c7191752f29075e6de0be324169ad46879564fd288021d6fa0965", + "DiscoKey": "discokey:9fa02ee3b1b8647f9132dd73482c460641565157553ef13336311ccc6a3a1047", + "Addresses": ["100.122.9.101/32", "fd7a:115c:a1e0::d628:966/128"], + "AllowedIPs": ["100.122.9.101/32", "fd7a:115c:a1e0::d628:966/128"], + "Endpoints": [ + "192.0.2.1:35808", + "198.51.100.1:35808", + "198.51.100.2:35808", + "198.51.100.3:35808" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "ci-runner", "Services": [ + {"Proto": "peerapi4", "Port": 39434}, + {"Proto": "peerapi6", "Port": 39434} + ]}, + "Created": "2026-10-17T19:11:35.442211365Z", + "Cap": 142, + "Tags": ["tag:managed"], + "Online": true, + "ComputedName": "ci-runner", + "ComputedNameWithHost": "ci-runner" + }, { + "ID": 7507593642133957, + "StableID": "nnoJckkCd121CNTRL", + "Name": "laptop.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:58b0defaa5956033743da2ab510fba3721e8cc19b896af7809c4665ec71c2d4e", + "KeyExpiry": "2027-04-15T19:11:43Z", + "DiscoKey": "discokey:4811774314788f1972c4aafb700145df274e6fe6852bcafde8825596aa004a55", + "Addresses": ["100.92.45.78/32", "fd7a:115c:a1e0::c728:2d4f/128"], + "AllowedIPs": ["100.92.45.78/32", "fd7a:115c:a1e0::c728:2d4f/128"], + "Endpoints": [ + "192.0.2.1:56751", + "198.51.100.1:56751", + "198.51.100.2:56751", + "198.51.100.3:56751" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "laptop", "Services": [ + {"Proto": "peerapi4", "Port": 47294}, + {"Proto": "peerapi6", "Port": 47294} + ]}, + "Created": "2026-10-17T19:11:43.683330084Z", + "Cap": 142, + "Tags": ["tag:ci"], + "Online": true, + "ComputedName": "laptop", + "ComputedNameWithHost": "laptop" + }, { + "ID": 2763643232453942, + "StableID": "nuERoqDfaN11CNTRL", + "Name": "managed.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:1f97b206962b0aa23bc6d481c708650242bdc45190420425dc5bd7be00cd493d", + "DiscoKey": "discokey:342ced2491b5b541494e9e9942825ed140d6b83226c418f02f995172f7cfd733", + "Addresses": ["100.77.73.61/32", "fd7a:115c:a1e0::28:493e/128"], + "AllowedIPs": ["100.77.73.61/32", "fd7a:115c:a1e0::28:493e/128"], + "Endpoints": [ + "192.0.2.1:59663", + "198.51.100.1:59663", + "198.51.100.2:59663", + "198.51.100.3:59663" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "managed", "Services": [ + {"Proto": "peerapi4", "Port": 65500}, + {"Proto": "peerapi6", "Port": 65500} + ]}, + "Created": "2026-10-17T19:11:41.661289426Z", + "Cap": 142, + "Tags": ["tag:ci"], + "Online": true, + "ComputedName": "managed", + "ComputedNameWithHost": "managed" + }, { + "ID": 8080604858439017, + "StableID": "nNKKcfni6621CNTRL", + "Name": "mixed.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a4dbb3de21b5d89016684ce8b54865376f057648a63dc76dcd0578d5d611d475", + "DiscoKey": "discokey:8d9996dea8092414997a38c016510f32ecf746d421a3e0c7d7d13bb29be08d5f", + "Addresses": ["100.81.212.117/32", "fd7a:115c:a1e0::d628:d476/128"], + "AllowedIPs": ["100.81.212.117/32", "fd7a:115c:a1e0::d628:d476/128"], + "Endpoints": [ + "192.0.2.1:48635", + "198.51.100.1:48635", + "198.51.100.2:48635", + "198.51.100.3:48635" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "mixed", "Services": [ + {"Proto": "peerapi4", "Port": 38973}, + {"Proto": "peerapi6", "Port": 38973} + ]}, + "Created": "2026-10-17T19:11:39.655915145Z", + "Cap": 142, + "Tags": ["tag:ci", "tag:prod"], + "Online": true, + "ComputedName": "mixed", + "ComputedNameWithHost": "mixed" + }, { + "ID": 4873069762449992, + "StableID": "nHP8sCH24f11CNTRL", + "Name": "prod-db.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:e8b87029574c00e7835e8e0ccd0968ce0f17cef1ea84e19935734e198674476c", + "DiscoKey": "discokey:69497d4c5dfe2af39dc936e0c4e9b9b0b5076fdbcf8597c112abfc37df77af46", + "Addresses": ["100.116.71.108/32", "fd7a:115c:a1e0::8628:476d/128"], + "AllowedIPs": ["100.116.71.108/32", "fd7a:115c:a1e0::8628:476d/128"], + "Endpoints": [ + "192.0.2.1:34401", + "198.51.100.1:34401", + "198.51.100.2:34401", + "198.51.100.3:34401" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "prod-db", "Services": [ + {"Proto": "peerapi4", "Port": 60719}, + {"Proto": "peerapi6", "Port": 60719} + ]}, + "Created": "2026-10-17T19:11:37.443945993Z", + "Cap": 142, + "Tags": ["tag:prod"], + "Online": true, + "ComputedName": "prod-db", + "ComputedNameWithHost": "prod-db" + }, { + "ID": 2300076859349604, + "StableID": "nBERpt7ixJ11CNTRL", + "Name": "router.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:6125c4ab086b0ca4ab32d981b91839951a916114cee64132244c96cdf6fe3153", + "DiscoKey": "discokey:6dd8818524be41bf022bdd0e74b1847ac1c6bbec14aa5913cd032c8564b4c150", + "Addresses": ["100.126.49.83/32", "fd7a:115c:a1e0::f628:3154/128"], + "AllowedIPs": ["100.126.49.83/32", "fd7a:115c:a1e0::f628:3154/128", "10.42.0.0/16"], + "Endpoints": [ + "192.0.2.1:41850", + "198.51.100.1:41850", + "198.51.100.2:41850", + "198.51.100.3:41850" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "router", "Services": [ + {"Proto": "peerapi4", "Port": 39860}, + {"Proto": "peerapi6", "Port": 39860} + ]}, + "Created": "2026-10-17T19:11:45.687647805Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.42.0.0/16"], + "Online": true, + "ComputedName": "router", + "ComputedNameWithHost": "router" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "10.42.0.0/16", + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "10.42.0.0/16", + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "2456928377118214": { + "ID": 2456928377118214, + "LoginName": "joiner.tail78f774.ts.net", + "DisplayName": "joiner" + }} + }, + "backend_state": "Running" + }}, + "register": {"joiner": [{ + "node_key": "{nodekey:8}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 51 + }]} + }, { + "name": "B10", + "at": "2026-10-17T19:14:22.662198062Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:before}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.115.187.67", "fd7a:115c:a1e0::328:bb44"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:37628", + "192.0.2.1:37628", + "198.51.100.2:37628", + "198.51.100.3:37628" + ], "latency": { + "Amsterdam": {"latencyMs": 14.075776999999999, "preferred": true}, + "Ashburn": {"latencyMs": 100.013042}, + "Bengaluru": {"latencyMs": 139.24530800000002}, + "Chicago": {"latencyMs": 114.223455}, + "Dallas": {"latencyMs": 126.789566}, + "Denver": {"latencyMs": 139.733565}, + "Dubai": {"latencyMs": 116.424384}, + "Frankfurt": {"latencyMs": 16.103661}, + "Helsinki": {"latencyMs": 37.56565}, + "Hong Kong": {"latencyMs": 197.382541}, + "Honolulu": {"latencyMs": 208.620175}, + "Johannesburg": {"latencyMs": 212.81410400000001}, + "London": {"latencyMs": 15.489941}, + "Los Angeles": {"latencyMs": 143.327552}, + "Madrid": {"latencyMs": 42.764405}, + "Miami": {"latencyMs": 118.78058499999999}, + "Nairobi": {"latencyMs": 162.32407600000002}, + "New York City": {"latencyMs": 84.096796}, + "Nuremberg": {"latencyMs": 23.874993}, + "Paris": {"latencyMs": 20.593248000000003}, + "San Francisco": {"latencyMs": 163.342332}, + "Seattle": {"latencyMs": 148.45379}, + "Singapore": {"latencyMs": 179.505111}, + "Tokyo": {"latencyMs": 236.895477}, + "Toronto": {"latencyMs": 122.025274}, + "Warsaw": {"latencyMs": 35.041044} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:14:15Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:14:15Z", + "hostname": "before", + "id": "{device:before}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:14:23Z", + "machineKey": "{machine:before}", + "name": "before.tail78f774.ts.net", + "nodeId": "{device:before}", + "nodeKey": "{nodekey:7}", + "oauthClientId": "{client:C-parent}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:f705569de1c02fe298e6995891ccf19eb53d57f6f39f41d86f60602ee2afc88a", + "updateAvailable": true, + "user": "" + } + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:joiner}?fields=all", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "addresses": ["100.93.253.10", "fd7a:115c:a1e0::f28:fd0b"], + "advertisedRoutes": [], + "authorized": true, + "blocksIncomingConnections": false, + "clientConnectivity": {"clientSupports": { + "hairPinning": null, + "ipv6": false, + "pcp": false, + "pmp": false, + "udp": true, + "upnp": false + }, "endpoints": [ + "198.51.100.1:57605", + "192.0.2.1:57605", + "198.51.100.2:57605", + "198.51.100.3:57605" + ], "latency": { + "Amsterdam": {"latencyMs": 10.990313, "preferred": true}, + "Ashburn": {"latencyMs": 100.22089600000001}, + "Bengaluru": {"latencyMs": 144.18213}, + "Chicago": {"latencyMs": 112.597381}, + "Dallas": {"latencyMs": 128.718797}, + "Denver": {"latencyMs": 135.759741}, + "Dubai": {"latencyMs": 115.60494}, + "Frankfurt": {"latencyMs": 19.282899999999998}, + "Helsinki": {"latencyMs": 35.195531}, + "Hong Kong": {"latencyMs": 194.997312}, + "Honolulu": {"latencyMs": 197.988887}, + "Johannesburg": {"latencyMs": 204.291951}, + "London": {"latencyMs": 16.628637}, + "Los Angeles": {"latencyMs": 143.74848}, + "Madrid": {"latencyMs": 34.738598}, + "Miami": {"latencyMs": 117.840409}, + "Nairobi": {"latencyMs": 163.91586999999998}, + "New York City": {"latencyMs": 84.442155}, + "Nuremberg": {"latencyMs": 23.946336}, + "Paris": {"latencyMs": 19.122144000000002}, + "San Francisco": {"latencyMs": 155.77793200000002}, + "Seattle": {"latencyMs": 146.390397}, + "Singapore": {"latencyMs": 179.513193}, + "Tokyo": {"latencyMs": 241.12713399999998}, + "Toronto": {"latencyMs": 120.888419}, + "Warsaw": {"latencyMs": 28.534208} + }, "mappingVariesByDestIP": false}, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-17T19:14:20Z", + "distro": {"codeName": "yarara", "name": "nixos", "version": "26.05"}, + "enabledRoutes": [], + "expires": "2027-04-15T19:14:20Z", + "hostname": "joiner", + "id": "{device:joiner}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-17T19:14:23Z", + "machineKey": "{machine:joiner}", + "name": "joiner.tail78f774.ts.net", + "nodeId": "{device:joiner}", + "nodeKey": "{nodekey:8}", + "oauthClientId": "{client:C-parent}", + "os": "linux", + "postureStatus": {}, + "sshEnabled": false, + "tags": ["tag:ci"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:213d91ab443b0c401a32653cd6498af84306488a9a5557931b668dd4824697cb", + "updateAvailable": true, + "user": "" + }, + "offset_ms": 17 + }], + "captures": {"before": { + "packet_filter_rules": [{"SrcIPs": [ + "10.42.0.0/16", + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "10.42.0.0/16", + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 6358029555998068, + "StableID": "n1wDpzeZer11CNTRL", + "Name": "before.tail78f774.ts.net.", + "User": 6358029555998068, + "Key": "nodekey:6260e3205c63ce52d1fac8c2508ff600f4aa3c0217862a91f52a30980333bb43", + "DiscoKey": "discokey:80ed448162e864d4bfb859acf22c58fe2ced10893de58703074976202e94696a", + "Addresses": ["100.115.187.67/32", "fd7a:115c:a1e0::328:bb44/128"], + "AllowedIPs": ["100.115.187.67/32", "fd7a:115c:a1e0::328:bb44/128"], + "Endpoints": [ + "192.0.2.1:37628", + "198.51.100.1:37628", + "198.51.100.2:37628", + "198.51.100.3:37628" + ], + "Hostinfo": {"Hostname": "before", "RequestTags": ["tag:ci"], "Services": [ + {"Proto": "peerapi4", "Port": 59458}, + {"Proto": "peerapi6", "Port": 59458}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:14:15.192880101Z", + "Tags": ["tag:ci"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "before", + "ComputedNameWithHost": "before" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:6260e3205c63ce52d1fac8c2508ff600f4aa3c0217862a91f52a30980333bb43", + "MachineKey": "mkey:43a8b5038cd76b66b3fbe250e27f61f783141b2bc040c28ffecd1496c82fc24e", + "Peers": [{ + "ID": 3341264727064639, + "StableID": "nELpJoMG6T11CNTRL", + "Name": "ci-runner.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:821b5f12347c7191752f29075e6de0be324169ad46879564fd288021d6fa0965", + "DiscoKey": "discokey:9fa02ee3b1b8647f9132dd73482c460641565157553ef13336311ccc6a3a1047", + "Addresses": ["100.122.9.101/32", "fd7a:115c:a1e0::d628:966/128"], + "AllowedIPs": ["100.122.9.101/32", "fd7a:115c:a1e0::d628:966/128"], + "Endpoints": [ + "192.0.2.1:35808", + "198.51.100.1:35808", + "198.51.100.2:35808", + "198.51.100.3:35808" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "ci-runner", "Services": [ + {"Proto": "peerapi4", "Port": 39434}, + {"Proto": "peerapi6", "Port": 39434} + ]}, + "Created": "2026-10-17T19:11:35.442211365Z", + "Cap": 142, + "Tags": ["tag:managed"], + "Online": true, + "ComputedName": "ci-runner", + "ComputedNameWithHost": "ci-runner" + }, { + "ID": 2456928377118214, + "StableID": "n529LrLkBL11CNTRL", + "Name": "joiner.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:0c836b55459bac7f236e4c372f738f3ecedc89f81e8b8f35d87761f50f1dfd0a", + "DiscoKey": "discokey:58818fe7562cc550da3e140e1a82a82412c2c71fe6e341ec817ee91d98abcf17", + "Addresses": ["100.93.253.10/32", "fd7a:115c:a1e0::f28:fd0b/128"], + "AllowedIPs": ["100.93.253.10/32", "fd7a:115c:a1e0::f28:fd0b/128"], + "Endpoints": [ + "192.0.2.1:57605", + "198.51.100.1:57605", + "198.51.100.2:57605", + "198.51.100.3:57605" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "joiner", "Services": [ + {"Proto": "peerapi4", "Port": 37407}, + {"Proto": "peerapi6", "Port": 37407} + ]}, + "Created": "2026-10-17T19:14:20.228579461Z", + "Cap": 142, + "Tags": ["tag:ci"], + "Online": true, + "ComputedName": "joiner", + "ComputedNameWithHost": "joiner" + }, { + "ID": 7507593642133957, + "StableID": "nnoJckkCd121CNTRL", + "Name": "laptop.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:58b0defaa5956033743da2ab510fba3721e8cc19b896af7809c4665ec71c2d4e", + "KeyExpiry": "2027-04-15T19:11:43Z", + "DiscoKey": "discokey:4811774314788f1972c4aafb700145df274e6fe6852bcafde8825596aa004a55", + "Addresses": ["100.92.45.78/32", "fd7a:115c:a1e0::c728:2d4f/128"], + "AllowedIPs": ["100.92.45.78/32", "fd7a:115c:a1e0::c728:2d4f/128"], + "Endpoints": [ + "192.0.2.1:56751", + "198.51.100.1:56751", + "198.51.100.2:56751", + "198.51.100.3:56751" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "laptop", "Services": [ + {"Proto": "peerapi4", "Port": 47294}, + {"Proto": "peerapi6", "Port": 47294} + ]}, + "Created": "2026-10-17T19:11:43.683330084Z", + "Cap": 142, + "Tags": ["tag:ci"], + "Online": true, + "ComputedName": "laptop", + "ComputedNameWithHost": "laptop" + }, { + "ID": 2763643232453942, + "StableID": "nuERoqDfaN11CNTRL", + "Name": "managed.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:1f97b206962b0aa23bc6d481c708650242bdc45190420425dc5bd7be00cd493d", + "DiscoKey": "discokey:342ced2491b5b541494e9e9942825ed140d6b83226c418f02f995172f7cfd733", + "Addresses": ["100.77.73.61/32", "fd7a:115c:a1e0::28:493e/128"], + "AllowedIPs": ["100.77.73.61/32", "fd7a:115c:a1e0::28:493e/128"], + "Endpoints": [ + "192.0.2.1:59663", + "198.51.100.1:59663", + "198.51.100.2:59663", + "198.51.100.3:59663" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "managed", "Services": [ + {"Proto": "peerapi4", "Port": 65500}, + {"Proto": "peerapi6", "Port": 65500} + ]}, + "Created": "2026-10-17T19:11:41.661289426Z", + "Cap": 142, + "Tags": ["tag:ci"], + "Online": true, + "ComputedName": "managed", + "ComputedNameWithHost": "managed" + }, { + "ID": 8080604858439017, + "StableID": "nNKKcfni6621CNTRL", + "Name": "mixed.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a4dbb3de21b5d89016684ce8b54865376f057648a63dc76dcd0578d5d611d475", + "DiscoKey": "discokey:8d9996dea8092414997a38c016510f32ecf746d421a3e0c7d7d13bb29be08d5f", + "Addresses": ["100.81.212.117/32", "fd7a:115c:a1e0::d628:d476/128"], + "AllowedIPs": ["100.81.212.117/32", "fd7a:115c:a1e0::d628:d476/128"], + "Endpoints": [ + "192.0.2.1:48635", + "198.51.100.1:48635", + "198.51.100.2:48635", + "198.51.100.3:48635" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "mixed", "Services": [ + {"Proto": "peerapi4", "Port": 38973}, + {"Proto": "peerapi6", "Port": 38973} + ]}, + "Created": "2026-10-17T19:11:39.655915145Z", + "Cap": 142, + "Tags": ["tag:ci", "tag:prod"], + "Online": true, + "ComputedName": "mixed", + "ComputedNameWithHost": "mixed" + }, { + "ID": 4873069762449992, + "StableID": "nHP8sCH24f11CNTRL", + "Name": "prod-db.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:e8b87029574c00e7835e8e0ccd0968ce0f17cef1ea84e19935734e198674476c", + "DiscoKey": "discokey:69497d4c5dfe2af39dc936e0c4e9b9b0b5076fdbcf8597c112abfc37df77af46", + "Addresses": ["100.116.71.108/32", "fd7a:115c:a1e0::8628:476d/128"], + "AllowedIPs": ["100.116.71.108/32", "fd7a:115c:a1e0::8628:476d/128"], + "Endpoints": [ + "192.0.2.1:34401", + "198.51.100.1:34401", + "198.51.100.2:34401", + "198.51.100.3:34401" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "prod-db", "Services": [ + {"Proto": "peerapi4", "Port": 60719}, + {"Proto": "peerapi6", "Port": 60719} + ]}, + "Created": "2026-10-17T19:11:37.443945993Z", + "Cap": 142, + "Tags": ["tag:prod"], + "Online": true, + "ComputedName": "prod-db", + "ComputedNameWithHost": "prod-db" + }, { + "ID": 2300076859349604, + "StableID": "nBERpt7ixJ11CNTRL", + "Name": "router.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:6125c4ab086b0ca4ab32d981b91839951a916114cee64132244c96cdf6fe3153", + "DiscoKey": "discokey:6dd8818524be41bf022bdd0e74b1847ac1c6bbec14aa5913cd032c8564b4c150", + "Addresses": ["100.126.49.83/32", "fd7a:115c:a1e0::f628:3154/128"], + "AllowedIPs": ["100.126.49.83/32", "fd7a:115c:a1e0::f628:3154/128", "10.42.0.0/16"], + "Endpoints": [ + "192.0.2.1:41850", + "198.51.100.1:41850", + "198.51.100.2:41850", + "198.51.100.3:41850" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "router", "Services": [ + {"Proto": "peerapi4", "Port": 39860}, + {"Proto": "peerapi6", "Port": 39860} + ]}, + "Created": "2026-10-17T19:11:45.687647805Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.42.0.0/16"], + "Online": true, + "ComputedName": "router", + "ComputedNameWithHost": "router" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "10.42.0.0/16", + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "10.42.0.0/16", + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "6358029555998068": { + "ID": 6358029555998068, + "LoginName": "before.tail78f774.ts.net", + "DisplayName": "before" + }} + }, + "backend_state": "Running" + }} + }, { + "name": "B11", + "at": "2026-10-17T19:14:24.700838426Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "token:C-child", + "method": "GET", + "path": "/tailnet/-/keys", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"keys": [{ + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci"] + }}}, + "created": "2026-10-17T19:14:11Z", + "description": "tscap-saasprobe K-child", + "expires": "2026-10-17T20:14:11Z", + "expirySeconds": 3600, + "id": "{key:K-child}", + "keyType": "auth" + }]} + }, { + "kind": "token", + "client": "C-child", + "principal": "token:C-child/B11", + "status": 200, + "response": { + "expires_in": 3600, + "scope": "auth_keys", + "tags": "tag:ci", + "token_type": "Bearer" + }, + "offset_ms": 17 + }, { + "kind": "api", + "principal": "token:C-child/B11", + "method": "GET", + "path": "/tailnet/-/keys", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"keys": [{ + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": true, + "tags": ["tag:ci"] + }}}, + "created": "2026-10-17T19:14:11Z", + "description": "tscap-saasprobe K-child", + "expires": "2026-10-17T20:14:11Z", + "expirySeconds": 3600, + "id": "{key:K-child}", + "keyType": "auth" + }]}, + "offset_ms": 34 + }] + }, { + "name": "retire", + "at": "2026-10-17T19:14:24.752266633Z", + "result": "observed", + "actions": [ + {"kind": "retire", "node": "ci-runner"}, + {"kind": "retire", "node": "prod-db", "offset_ms": 2002}, + {"kind": "retire", "node": "mixed", "offset_ms": 4021}, + {"kind": "retire", "node": "managed", "offset_ms": 6041}, + {"kind": "retire", "node": "laptop", "offset_ms": 8061}, + {"kind": "retire", "node": "router", "offset_ms": 10080}, + {"kind": "retire", "node": "before", "offset_ms": 12098}, + {"kind": "retire", "node": "joiner", "offset_ms": 14118}, + {"kind": "retire", "args": ["keys", "clients"], "offset_ms": 16139} + ] + }] +} diff --git a/hscontrol/servertest/testdata/steps/policy-api.hujson b/hscontrol/servertest/testdata/steps/policy-api.hujson new file mode 100644 index 000000000..845c7bfa1 --- /dev/null +++ b/hscontrol/servertest/testdata/steps/policy-api.hujson @@ -0,0 +1,23134 @@ +// policy-api +// +// Policy writes, validation and ETags through the admin API, with what desk and server enforce +// +// Steps: 18 +// Captured at: 2026-10-17T19:03:05Z +// tool version: saasprobe 80c26222a6c4a22bab2b8ed076de91bc8feac5cb +// schema version: 1 +{ + "schema_version": 1, + "test_id": "policy-api", + "description": "Policy writes, validation and ETags through the admin API, with what desk and server enforce", + "captured_at": "2026-10-17T19:03:05.203448666Z", + "tool_version": "saasprobe 80c26222a6c4a22bab2b8ed076de91bc8feac5cb", + "client_version": "1.102.5-ERR-BuildInfo capver 142", + "tailnet": "odin@example.com", + "input": {"api_response_code": 0, "tailnet": {"dns": { + "magic_dns": false, + "nameservers": null, + "search_paths": null, + "split_dns": null + }, "settings": {}}, "scenario_hujson": "", "full_policy": {"tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"], + "tag:managed": ["tag:ci"] + }, "grants": [ + {"src": ["autogroup:member"], "dst": ["tag:server"], "ip": ["tcp:22"]} + ], "ssh": [{ + "action": "accept", + "src": ["autogroup:member"], + "dst": ["tag:server"], + "users": ["root"] + }]}}, + "topology": {"users": [ + {"id": 1, "name": "odin", "email": "odin@example.com"}, + {"id": 2, "name": "thor", "email": "thor@example.org"}, + {"id": 3, "name": "freya", "email": "freya@example.com"} + ], "nodes": {"desk": { + "hostname": "desk", + "tags": [], + "ipv4": "100.94.113.77", + "ipv6": "fd7a:115c:a1e0::3028:714e", + "user": "odin", + "routable_ips": [], + "approved_routes": [] + }, "server": { + "hostname": "server", + "tags": ["tag:server"], + "ipv4": "100.107.106.51", + "ipv6": "fd7a:115c:a1e0::e328:6a34", + "routable_ips": [], + "approved_routes": [] + }}}, + "captures": null, + "node_ids": {"desk": 1833358735216660, "server": 5671268597119581}, + "steps": [{ + "name": "setup", + "at": "2026-10-17T19:03:05.203483163Z", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "J-server", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:server"] + }}}, "description": "tscap-saasprobe J-server", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": {"devices": {"create": { + "ephemeral": false, + "preauthorized": true, + "reusable": false, + "tags": ["tag:server"] + }}}, + "created": "2026-10-17T19:03:07Z", + "description": "tscap-saasprobe J-server", + "expires": "2026-10-17T20:03:07Z", + "expirySeconds": 3600, + "id": "{key:J-server}", + "keyType": "auth", + "userId": "{unmatched:1}" + } + }, { + "kind": "join", + "node": "server", + "key": "J-server", + "request_tags": ["tag:server"], + "hostname": "server", + "offset_ms": 2085 + }, { + "kind": "api", + "key": "J-desk", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/keys", + "header": {"Content-Type": "application/json"}, + "body": {"capabilities": {"devices": { + "create": {"ephemeral": false, "preauthorized": true, "reusable": false, "tags": null} + }}, "description": "tscap-saasprobe J-desk", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": { + "devices": {"create": {"ephemeral": false, "preauthorized": true, "reusable": false}} + }, + "created": "2026-10-17T19:03:09Z", + "description": "tscap-saasprobe J-desk", + "expires": "2026-10-17T20:03:09Z", + "expirySeconds": 3600, + "id": "{key:J-desk}", + "keyType": "auth", + "userId": "{unmatched:1}" + }, + "offset_ms": 2869 + }, { + "kind": "join", + "node": "desk", + "key": "J-desk", + "hostname": "desk", + "offset_ms": 4106 + }], + "register": {"desk": [{ + "node_key": "{nodekey:10}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 3796 + }], "server": [{ + "node_key": "{nodekey:9}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 1796 + }]}, + "frames": {"desk": [ + {"offset_ms": 3796, "request": { + "Version": 142, + "Compress": "zstd", + "KeepAlive": true, + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Hostinfo": { + "IPNVersion": "1.102.5-ERR-BuildInfo", + "BackendLogID": "anonymized", + "OS": "linux", + "OSVersion": "anonymized", + "Container": false, + "Distro": "anonymized", + "DistroVersion": "anonymized", + "DistroCodeName": "anonymized", + "Desktop": false, + "Hostname": "desk", + "NoLogsNoSupport": true, + "Machine": "anonymized", + "GoArch": "amd64", + "GoArchVar": "v1", + "GoVersion": "go1.27.1", + "Services": [{"Proto": "peerapi-dns-proxy", "Port": 1}], + "Userspace": true, + "UserspaceRouter": true, + "AppConnector": false, + "StateEncrypted": false + }, + "OmitPeers": true, + "DebugFlags": ["netstack"] + }}, + {"offset_ms": 3796, "request": { + "Version": 142, + "Compress": "zstd", + "KeepAlive": true, + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Stream": true, + "Hostinfo": { + "IPNVersion": "1.102.5-ERR-BuildInfo", + "BackendLogID": "anonymized", + "OS": "linux", + "OSVersion": "anonymized", + "Container": false, + "Distro": "anonymized", + "DistroVersion": "anonymized", + "DistroCodeName": "anonymized", + "Desktop": false, + "Hostname": "desk", + "NoLogsNoSupport": true, + "Machine": "anonymized", + "GoArch": "amd64", + "GoArchVar": "v1", + "GoVersion": "go1.27.1", + "Services": [{"Proto": "peerapi-dns-proxy", "Port": 1}], + "Userspace": true, + "UserspaceRouter": true, + "AppConnector": false, + "StateEncrypted": false + }, + "DebugFlags": ["netstack"] + }}, + {"offset_ms": 3796, "response": { + "Node": { + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Hostinfo": { + "Hostname": "desk", + "Services": [{"Proto": "peerapi-dns-proxy", "Port": 1}] + }, + "Created": "2026-10-17T19:03:09.4454174Z", + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-admin": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + } + }, + "PeersChanged": [{ + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "DERP": "127.3.3.40:14", + "Hostinfo": {"OS": "linux", "Hostname": "server", "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true + }], + "DNSConfig": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "Domain": "odin@example.com", + "PacketFilter": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "UserProfiles": [{ + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }], + "SSHPolicy": {"rules": []}, + "ControlTime": "2026-10-17T19:03:09.46903227Z" + }, "dropped": ["DERPMap", "ControlDialPlan"]}, + {"offset_ms": 3796, "request": { + "Version": 142, + "Compress": "zstd", + "KeepAlive": true, + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Hostinfo": { + "IPNVersion": "1.102.5-ERR-BuildInfo", + "BackendLogID": "anonymized", + "OS": "linux", + "OSVersion": "anonymized", + "Container": false, + "Distro": "anonymized", + "DistroVersion": "anonymized", + "DistroCodeName": "anonymized", + "Desktop": false, + "Hostname": "desk", + "NoLogsNoSupport": true, + "Machine": "anonymized", + "GoArch": "amd64", + "GoArchVar": "v1", + "GoVersion": "go1.27.1", + "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ], + "Userspace": true, + "UserspaceRouter": true, + "AppConnector": false, + "StateEncrypted": false + }, + "OmitPeers": true, + "DebugFlags": ["netstack"] + }}, + {"offset_ms": 3796, "request": { + "Version": 142, + "Compress": "zstd", + "KeepAlive": true, + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Hostinfo": { + "IPNVersion": "1.102.5-ERR-BuildInfo", + "BackendLogID": "anonymized", + "OS": "linux", + "OSVersion": "anonymized", + "Container": false, + "Distro": "anonymized", + "DistroVersion": "anonymized", + "DistroCodeName": "anonymized", + "Desktop": false, + "Hostname": "desk", + "NoLogsNoSupport": true, + "Machine": "anonymized", + "GoArch": "amd64", + "GoArchVar": "v1", + "GoVersion": "go1.27.1", + "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ], + "NetInfo": { + "MappingVariesByDestIP": false, + "WorkingIPv6": false, + "OSHasIPv6": true, + "WorkingUDP": true, + "WorkingICMPv4": false, + "UPnP": false, + "PMP": false, + "PCP": false, + "PreferredDERP": 14, + "DERPLatency": { + "1-v4": 0, + "10-v4": 0, + "12-v4": 0, + "13-v4": 0, + "14-v4": 0, + "15-v4": 0, + "16-v4": 0, + "17-v4": 0, + "18-v4": 0, + "19-v4": 0, + "2-v4": 0, + "20-v4": 0, + "21-v4": 0, + "22-v4": 0, + "23-v4": 0, + "24-v4": 0, + "25-v4": 0, + "26-v4": 0, + "27-v4": 0, + "28-v4": 0, + "4-v4": 0, + "6-v4": 0, + "7-v4": 0, + "8-v4": 0, + "9-v4": 0 + } + }, + "Userspace": true, + "UserspaceRouter": true, + "AppConnector": false, + "StateEncrypted": false + }, + "OmitPeers": true, + "DebugFlags": ["netstack"] + }}, + {"offset_ms": 3796, "request": { + "Version": 142, + "Compress": "zstd", + "KeepAlive": true, + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Hostinfo": { + "IPNVersion": "1.102.5-ERR-BuildInfo", + "BackendLogID": "anonymized", + "OS": "linux", + "OSVersion": "anonymized", + "Container": false, + "Distro": "anonymized", + "DistroVersion": "anonymized", + "DistroCodeName": "anonymized", + "Desktop": false, + "Hostname": "desk", + "NoLogsNoSupport": true, + "Machine": "anonymized", + "GoArch": "amd64", + "GoArchVar": "v1", + "GoVersion": "go1.27.1", + "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ], + "NetInfo": { + "MappingVariesByDestIP": false, + "WorkingIPv6": false, + "OSHasIPv6": true, + "WorkingUDP": true, + "WorkingICMPv4": false, + "UPnP": false, + "PMP": false, + "PCP": false, + "PreferredDERP": 14, + "DERPLatency": { + "1-v4": 0, + "10-v4": 0, + "12-v4": 0, + "13-v4": 0, + "14-v4": 0, + "15-v4": 0, + "16-v4": 0, + "17-v4": 0, + "18-v4": 0, + "19-v4": 0, + "2-v4": 0, + "20-v4": 0, + "21-v4": 0, + "22-v4": 0, + "23-v4": 0, + "24-v4": 0, + "25-v4": 0, + "26-v4": 0, + "27-v4": 0, + "28-v4": 0, + "4-v4": 0, + "6-v4": 0, + "7-v4": 0, + "8-v4": 0, + "9-v4": 0 + } + }, + "Userspace": true, + "UserspaceRouter": true, + "AppConnector": false, + "StateEncrypted": false + }, + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "EndpointTypes": [2, 1, 1, 1], + "OmitPeers": true, + "DebugFlags": ["netstack"] + }} + ], "server": [ + {"offset_ms": 1796, "request": { + "Version": 142, + "Compress": "zstd", + "KeepAlive": true, + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Hostinfo": { + "IPNVersion": "1.102.5-ERR-BuildInfo", + "BackendLogID": "anonymized", + "OS": "linux", + "OSVersion": "anonymized", + "Container": false, + "Distro": "anonymized", + "DistroVersion": "anonymized", + "DistroCodeName": "anonymized", + "Desktop": false, + "Hostname": "server", + "NoLogsNoSupport": true, + "Machine": "anonymized", + "GoArch": "amd64", + "GoArchVar": "v1", + "GoVersion": "go1.27.1", + "RequestTags": ["tag:server"], + "Services": [{"Proto": "peerapi-dns-proxy", "Port": 1}], + "Userspace": true, + "UserspaceRouter": true, + "AppConnector": false, + "StateEncrypted": false + }, + "OmitPeers": true, + "DebugFlags": ["netstack"] + }}, + {"offset_ms": 1796, "request": { + "Version": 142, + "Compress": "zstd", + "KeepAlive": true, + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Stream": true, + "Hostinfo": { + "IPNVersion": "1.102.5-ERR-BuildInfo", + "BackendLogID": "anonymized", + "OS": "linux", + "OSVersion": "anonymized", + "Container": false, + "Distro": "anonymized", + "DistroVersion": "anonymized", + "DistroCodeName": "anonymized", + "Desktop": false, + "Hostname": "server", + "NoLogsNoSupport": true, + "Machine": "anonymized", + "GoArch": "amd64", + "GoArchVar": "v1", + "GoVersion": "go1.27.1", + "RequestTags": ["tag:server"], + "Services": [{"Proto": "peerapi-dns-proxy", "Port": 1}], + "Userspace": true, + "UserspaceRouter": true, + "AppConnector": false, + "StateEncrypted": false + }, + "DebugFlags": ["netstack"] + }}, + {"offset_ms": 1796, "response": { + "Node": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Hostinfo": { + "Hostname": "server", + "RequestTags": ["tag:server"], + "Services": [{"Proto": "peerapi-dns-proxy", "Port": 1}] + }, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + } + }, + "DNSConfig": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "Domain": "odin@example.com", + "PacketFilter": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "UserProfiles": [{ + "ID": 5671268597119581, + "LoginName": "server.tail78f774.ts.net", + "DisplayName": "server" + }], + "SSHPolicy": {"rules": []}, + "ControlTime": "2026-10-17T19:03:07.507621969Z" + }, "dropped": ["DERPMap", "ControlDialPlan"]}, + {"offset_ms": 1796, "request": { + "Version": 142, + "Compress": "zstd", + "KeepAlive": true, + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Hostinfo": { + "IPNVersion": "1.102.5-ERR-BuildInfo", + "BackendLogID": "anonymized", + "OS": "linux", + "OSVersion": "anonymized", + "Container": false, + "Distro": "anonymized", + "DistroVersion": "anonymized", + "DistroCodeName": "anonymized", + "Desktop": false, + "Hostname": "server", + "NoLogsNoSupport": true, + "Machine": "anonymized", + "GoArch": "amd64", + "GoArchVar": "v1", + "GoVersion": "go1.27.1", + "RequestTags": ["tag:server"], + "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ], + "Userspace": true, + "UserspaceRouter": true, + "AppConnector": false, + "StateEncrypted": false + }, + "OmitPeers": true, + "DebugFlags": ["netstack"] + }}, + {"offset_ms": 1796, "request": { + "Version": 142, + "Compress": "zstd", + "KeepAlive": true, + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Hostinfo": { + "IPNVersion": "1.102.5-ERR-BuildInfo", + "BackendLogID": "anonymized", + "OS": "linux", + "OSVersion": "anonymized", + "Container": false, + "Distro": "anonymized", + "DistroVersion": "anonymized", + "DistroCodeName": "anonymized", + "Desktop": false, + "Hostname": "server", + "NoLogsNoSupport": true, + "Machine": "anonymized", + "GoArch": "amd64", + "GoArchVar": "v1", + "GoVersion": "go1.27.1", + "RequestTags": ["tag:server"], + "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ], + "NetInfo": { + "MappingVariesByDestIP": false, + "WorkingIPv6": false, + "OSHasIPv6": true, + "WorkingUDP": true, + "WorkingICMPv4": false, + "UPnP": false, + "PMP": false, + "PCP": false, + "PreferredDERP": 14, + "DERPLatency": { + "1-v4": 0, + "10-v4": 0, + "12-v4": 0, + "13-v4": 0, + "14-v4": 0, + "15-v4": 0, + "16-v4": 0, + "17-v4": 0, + "18-v4": 0, + "19-v4": 0, + "2-v4": 0, + "20-v4": 0, + "21-v4": 0, + "22-v4": 0, + "23-v4": 0, + "24-v4": 0, + "25-v4": 0, + "26-v4": 0, + "27-v4": 0, + "28-v4": 0, + "3-v4": 0, + "4-v4": 0, + "6-v4": 0, + "7-v4": 0, + "8-v4": 0, + "9-v4": 0 + } + }, + "Userspace": true, + "UserspaceRouter": true, + "AppConnector": false, + "StateEncrypted": false + }, + "OmitPeers": true, + "DebugFlags": ["netstack"] + }}, + {"offset_ms": 1796, "request": { + "Version": 142, + "Compress": "zstd", + "KeepAlive": true, + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Hostinfo": { + "IPNVersion": "1.102.5-ERR-BuildInfo", + "BackendLogID": "anonymized", + "OS": "linux", + "OSVersion": "anonymized", + "Container": false, + "Distro": "anonymized", + "DistroVersion": "anonymized", + "DistroCodeName": "anonymized", + "Desktop": false, + "Hostname": "server", + "NoLogsNoSupport": true, + "Machine": "anonymized", + "GoArch": "amd64", + "GoArchVar": "v1", + "GoVersion": "go1.27.1", + "RequestTags": ["tag:server"], + "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ], + "NetInfo": { + "MappingVariesByDestIP": false, + "WorkingIPv6": false, + "OSHasIPv6": true, + "WorkingUDP": true, + "WorkingICMPv4": false, + "UPnP": false, + "PMP": false, + "PCP": false, + "PreferredDERP": 14, + "DERPLatency": { + "1-v4": 0, + "10-v4": 0, + "12-v4": 0, + "13-v4": 0, + "14-v4": 0, + "15-v4": 0, + "16-v4": 0, + "17-v4": 0, + "18-v4": 0, + "19-v4": 0, + "2-v4": 0, + "20-v4": 0, + "21-v4": 0, + "22-v4": 0, + "23-v4": 0, + "24-v4": 0, + "25-v4": 0, + "26-v4": 0, + "27-v4": 0, + "28-v4": 0, + "3-v4": 0, + "4-v4": 0, + "6-v4": 0, + "7-v4": 0, + "8-v4": 0, + "9-v4": 0 + } + }, + "Userspace": true, + "UserspaceRouter": true, + "AppConnector": false, + "StateEncrypted": false + }, + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "EndpointTypes": [2, 1, 1, 1], + "OmitPeers": true, + "DebugFlags": ["netstack"] + }}, + {"offset_ms": 3796, "response": {"Node": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "Hostinfo": {"Hostname": "server", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + } + }, "PeersChanged": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Hostinfo": {"OS": "linux", "Hostname": "desk"}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true + }], "UserProfiles": [{ + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }], "ControlTime": "2026-10-17T19:03:09.448468039Z"}}, + {"offset_ms": 3796, "response": {"PeersChanged": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Hostinfo": {"OS": "linux", "Hostname": "desk"}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true + }]}}, + {"offset_ms": 3796, "response": {"PeersChanged": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Hostinfo": {"OS": "linux", "Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true + }]}}, + { + "offset_ms": 3796, + "response": {"PeersChangedPatch": [{"NodeID": 1833358735216660, "Online": true}]} + }, + {"offset_ms": 3796, "response": {"PeersChanged": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "DERP": "127.3.3.40:14", + "Hostinfo": {"OS": "linux", "Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true + }]}}, + { + "offset_ms": 3796, + "response": {"PeersChangedPatch": [{"NodeID": 1833358735216660, "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ]}]} + } + ]} + }, { + "name": "setup-ssh", + "at": "2026-10-17T19:03:09.846538753Z", + "result": "observed", + "actions": [{"kind": "cli", "node": "server", "args": ["set", "--ssh"], "exit": 0}], + "frames": {"server": [{"offset_ms": 153, "request": { + "Version": 142, + "Compress": "zstd", + "KeepAlive": true, + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Hostinfo": { + "IPNVersion": "1.102.5-ERR-BuildInfo", + "BackendLogID": "anonymized", + "OS": "linux", + "OSVersion": "anonymized", + "Container": false, + "Distro": "anonymized", + "DistroVersion": "anonymized", + "DistroCodeName": "anonymized", + "Desktop": false, + "Hostname": "server", + "NoLogsNoSupport": true, + "Machine": "anonymized", + "GoArch": "amd64", + "GoArchVar": "v1", + "GoVersion": "go1.27.1", + "RequestTags": ["tag:server"], + "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ], + "NetInfo": { + "MappingVariesByDestIP": false, + "WorkingIPv6": false, + "OSHasIPv6": true, + "WorkingUDP": true, + "WorkingICMPv4": false, + "UPnP": false, + "PMP": false, + "PCP": false, + "PreferredDERP": 14, + "DERPLatency": { + "1-v4": 0, + "10-v4": 0, + "12-v4": 0, + "13-v4": 0, + "14-v4": 0, + "15-v4": 0, + "16-v4": 0, + "17-v4": 0, + "18-v4": 0, + "19-v4": 0, + "2-v4": 0, + "20-v4": 0, + "21-v4": 0, + "22-v4": 0, + "23-v4": 0, + "24-v4": 0, + "25-v4": 0, + "26-v4": 0, + "27-v4": 0, + "28-v4": 0, + "3-v4": 0, + "4-v4": 0, + "6-v4": 0, + "7-v4": 0, + "8-v4": 0, + "9-v4": 0 + } + }, + "sshHostKeys": [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn8HhupklVL9qVwnvbYhCsLsJA04NhsVUR66qZHH0gbsxFNnuWx94k0WSEYI1UeYaC8GRDbXht4I5G8VO2d4TKtXguiLiOlIqYJZTfCnNuS0Mnd67zihVrHH/O9xQq0eExSErsn92JYcb5+IPG+E8LEEog8PYWow0veeTjBU8jxXP9w5UKMeXBVkMkAYQxqOdFS9s/0x39Rloq1++RSiG82pxlDTqkvQeUEOwopAio3uFVujwGzoJsWhFxFu5HtiSbadzZ5mRe9+LP+5AeHizlkx5WR3zQkhaByQTznA2OqnziTfMHSi4CIu/JDjs/KTRza2g9K0VQmSly82HXLA9h", + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVQdWbtL7MO5gHE0bYEAKKmXJxsmmK8e59+Qpos/oC2reuUO+02XRl6Ph2ZSrkNkyisJRAfT0j9rXuCd5BoMj8=", + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHU8PxNZY8c3JTj9JI3MLVZ9EopOlYzn4tbr3U1v83oO" + ], + "Userspace": true, + "UserspaceRouter": true, + "AppConnector": false, + "StateEncrypted": false + }, + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "EndpointTypes": [2, 1, 1, 1], + "OmitPeers": true, + "DebugFlags": ["netstack"] + }}]} + }, { + "name": "P0", + "at": "2026-10-17T19:03:10.02423916Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "status": 200, + "resp_header": {"Content-Type": "application/hujson", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 2001 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 2025 + }, { + "kind": "wait", + "node": "server", + "args": ["filter changed"], + "offset_ms": 2042 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 4045}], + "captures": {"desk": {"netmap": { + "Cached": false, + "SelfNode": { + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "Hostinfo": {"Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-admin": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "MachineKey": "mkey:b6304d7d3a900c907fbd97fed5929f5198172aa4d0c20356970a3503fa123928", + "Peers": [{ + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "server", "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936} + ], "sshHostKeys": [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn8HhupklVL9qVwnvbYhCsLsJA04NhsVUR66qZHH0gbsxFNnuWx94k0WSEYI1UeYaC8GRDbXht4I5G8VO2d4TKtXguiLiOlIqYJZTfCnNuS0Mnd67zihVrHH/O9xQq0eExSErsn92JYcb5+IPG+E8LEEog8PYWow0veeTjBU8jxXP9w5UKMeXBVkMkAYQxqOdFS9s/0x39Rloq1++RSiG82pxlDTqkvQeUEOwopAio3uFVujwGzoJsWhFxFu5HtiSbadzZ5mRe9+LP+5AeHizlkx5WR3zQkhaByQTznA2OqnziTfMHSi4CIu/JDjs/KTRza2g9K0VQmSly82HXLA9h", + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVQdWbtL7MO5gHE0bYEAKKmXJxsmmK8e59+Qpos/oC2reuUO+02XRl6Ph2ZSrkNkyisJRAfT0j9rXuCd5BoMj8=", + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHU8PxNZY8c3JTj9JI3MLVZ9EopOlYzn4tbr3U1v83oO" + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [], + "PacketFilterRules": null, + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "backend_state": "Running"}, "server": { + "packet_filter_rules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "packet_filter_matches": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "Hostinfo": {"Hostname": "server", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "MachineKey": "mkey:cbe57a51015f250f86670c53f4af86709a22ed7741137d9f98922e3c3e9bd210", + "Peers": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "PacketFilterRules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "5671268597119581": { + "ID": 5671268597119581, + "LoginName": "server.tail78f774.ts.net", + "DisplayName": "server" + }} + }, + "ssh_rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], + "backend_state": "Running" + }}, + "frames": {"desk": [{"offset_ms": 0, "response": {"PeersChanged": [{ + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "DERP": "127.3.3.40:14", + "Hostinfo": {"OS": "linux", "Hostname": "server", "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936} + ], "sshHostKeys": [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn8HhupklVL9qVwnvbYhCsLsJA04NhsVUR66qZHH0gbsxFNnuWx94k0WSEYI1UeYaC8GRDbXht4I5G8VO2d4TKtXguiLiOlIqYJZTfCnNuS0Mnd67zihVrHH/O9xQq0eExSErsn92JYcb5+IPG+E8LEEog8PYWow0veeTjBU8jxXP9w5UKMeXBVkMkAYQxqOdFS9s/0x39Rloq1++RSiG82pxlDTqkvQeUEOwopAio3uFVujwGzoJsWhFxFu5HtiSbadzZ5mRe9+LP+5AeHizlkx5WR3zQkhaByQTznA2OqnziTfMHSi4CIu/JDjs/KTRza2g9K0VQmSly82HXLA9h", + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVQdWbtL7MO5gHE0bYEAKKmXJxsmmK8e59+Qpos/oC2reuUO+02XRl6Ph2ZSrkNkyisJRAfT0j9rXuCd5BoMj8=", + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHU8PxNZY8c3JTj9JI3MLVZ9EopOlYzn4tbr3U1v83oO" + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true + }]}}, { + "offset_ms": 1975, + "response": {"Node": { + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "Hostinfo": {"Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-admin": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + } + }, "ControlTime": "2026-10-17T19:03:12.036205079Z"}, + "empty": {"PacketFilter": "[]"} + }], "server": [{"offset_ms": 1975, "response": { + "Node": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "Hostinfo": {"Hostname": "server", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + } + }, + "PacketFilter": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "ControlTime": "2026-10-17T19:03:12.03587088Z" + }}]} + }, { + "name": "P1", + "at": "2026-10-17T19:03:37.100501259Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "status": 200, + "resp_header": {"Content-Type": "application/hujson", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 2006 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 2026 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 2042}], + "captures": {"desk": {"netmap": { + "Cached": false, + "SelfNode": { + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "Hostinfo": {"Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-admin": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "MachineKey": "mkey:b6304d7d3a900c907fbd97fed5929f5198172aa4d0c20356970a3503fa123928", + "Peers": [{ + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "server", "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936} + ], "sshHostKeys": [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn8HhupklVL9qVwnvbYhCsLsJA04NhsVUR66qZHH0gbsxFNnuWx94k0WSEYI1UeYaC8GRDbXht4I5G8VO2d4TKtXguiLiOlIqYJZTfCnNuS0Mnd67zihVrHH/O9xQq0eExSErsn92JYcb5+IPG+E8LEEog8PYWow0veeTjBU8jxXP9w5UKMeXBVkMkAYQxqOdFS9s/0x39Rloq1++RSiG82pxlDTqkvQeUEOwopAio3uFVujwGzoJsWhFxFu5HtiSbadzZ5mRe9+LP+5AeHizlkx5WR3zQkhaByQTznA2OqnziTfMHSi4CIu/JDjs/KTRza2g9K0VQmSly82HXLA9h", + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVQdWbtL7MO5gHE0bYEAKKmXJxsmmK8e59+Qpos/oC2reuUO+02XRl6Ph2ZSrkNkyisJRAfT0j9rXuCd5BoMj8=", + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHU8PxNZY8c3JTj9JI3MLVZ9EopOlYzn4tbr3U1v83oO" + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [], + "PacketFilterRules": null, + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "backend_state": "Running"}, "server": { + "packet_filter_rules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "packet_filter_matches": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "Hostinfo": {"Hostname": "server", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "MachineKey": "mkey:cbe57a51015f250f86670c53f4af86709a22ed7741137d9f98922e3c3e9bd210", + "Peers": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "PacketFilterRules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "5671268597119581": { + "ID": 5671268597119581, + "LoginName": "server.tail78f774.ts.net", + "DisplayName": "server" + }} + }, + "ssh_rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], + "backend_state": "Running" + }} + }, { + "name": "P2", + "at": "2026-10-17T19:03:58.164707758Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl/validate", + "header": {"Content-Type": "application/hujson"}, + "body": "", + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "unexpected end of JSON input"}, + "offset_ms": 2002 + }, { + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": "", + "status": 200, + "resp_header": {"Content-Type": "application/hujson", "ETag": "{etag:3}"}, + "response": "// Example/default ACLs for unrestricted connections.\n{\n\t// Declare static groups of users. Use autogroups for all users or users with a specific role.\n\t// \"groups\": {\n\t// \t\"group:example\": [\"alice@example.com\", \"bob@example.com\"],\n\t// },\n\n\t// Define the tags which can be applied to devices and by which users.\n\t// \"tagOwners\": {\n\t// \t\"tag:example\": [\"autogroup:admin\"],\n\t// },\n\n\t// Define grants that govern access for users, groups, autogroups, tags,\n\t// Tailscale IP addresses, and subnet ranges.\n\t\"grants\": [\n\t\t// Allow all connections.\n\t\t// Comment this section out if you want to define specific restrictions.\n\t\t{\"src\": [\"*\"], \"dst\": [\"*\"], \"ip\": [\"*\"]},\n\n\t\t// Allow users in \"group:example\" to access \"tag:example\", but only from\n\t\t// devices that are running macOS and have enabled Tailscale client auto-updating.\n\t\t// {\"src\": [\"group:example\"], \"dst\": [\"tag:example\"], \"ip\": [\"*\"], \"srcPosture\":[\"posture:autoUpdateMac\"]},\n\t],\n\n\t// Define postures that will be applied to all rules without any specific\n\t// srcPosture definition.\n\t// \"defaultSrcPosture\": [\n\t// \"posture:anyMac\",\n\t// ],\n\n\t// Define device posture rules requiring devices to meet\n\t// certain criteria to access parts of your system.\n\t// \"postures\": {\n\t// // Require devices running macOS, a stable Tailscale\n\t// // version and auto update enabled for Tailscale.\n\t// \t\"posture:autoUpdateMac\": [\n\t// \t \"node:os == 'macos'\",\n\t// \t \"node:tsReleaseTrack == 'stable'\",\n\t// \t \"node:tsAutoUpdate\",\n\t// \t],\n\t// // Require devices running macOS and a stable\n\t// // Tailscale version.\n\t// \t\"posture:anyMac\": [\n\t// \t \"node:os == 'macos'\",\n\t// \t \"node:tsReleaseTrack == 'stable'\",\n\t// \t],\n\t// },\n\n\t// Define users and devices that can use Tailscale SSH.\n\t\"ssh\": [\n\t\t// Allow all users to SSH into their own devices in check mode.\n\t\t// Comment this section out if you want to define specific restrictions.\n\t\t{\n\t\t\t\"action\": \"check\",\n\t\t\t\"src\": [\"autogroup:member\"],\n\t\t\t\"dst\": [\"autogroup:self\"],\n\t\t\t\"users\": [\"autogroup:nonroot\", \"root\"],\n\t\t},\n\t],\n\n\t// Test access rules every time they're saved.\n\t// \"tests\": [\n\t// \t{\n\t// \t\t\"src\": \"alice@example.com\",\n\t// \t\t\"accept\": [\"tag:example\"],\n\t// \t\t\"deny\": [\"100.101.102.103:443\"],\n\t// \t},\n\t// ],\n}\n", + "offset_ms": 2020 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:3}"}, + "response": {"grants": [{"dst": ["*"], "ip": ["*"], "src": ["*"]}], "ssh": [{ + "action": "check", + "dst": ["autogroup:self"], + "src": ["autogroup:member"], + "users": ["autogroup:nonroot", "root"] + }]}, + "offset_ms": 4040 + }, { + "kind": "wait", + "node": "server", + "args": ["filter changed"], + "offset_ms": 4057 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 6060}], + "captures": {"desk": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "Hostinfo": {"Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-admin": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "MachineKey": "mkey:b6304d7d3a900c907fbd97fed5929f5198172aa4d0c20356970a3503fa123928", + "Peers": [{ + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "server", "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936} + ], "sshHostKeys": [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn8HhupklVL9qVwnvbYhCsLsJA04NhsVUR66qZHH0gbsxFNnuWx94k0WSEYI1UeYaC8GRDbXht4I5G8VO2d4TKtXguiLiOlIqYJZTfCnNuS0Mnd67zihVrHH/O9xQq0eExSErsn92JYcb5+IPG+E8LEEog8PYWow0veeTjBU8jxXP9w5UKMeXBVkMkAYQxqOdFS9s/0x39Rloq1++RSiG82pxlDTqkvQeUEOwopAio3uFVujwGzoJsWhFxFu5HtiSbadzZ5mRe9+LP+5AeHizlkx5WR3zQkhaByQTznA2OqnziTfMHSi4CIu/JDjs/KTRza2g9K0VQmSly82HXLA9h", + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVQdWbtL7MO5gHE0bYEAKKmXJxsmmK8e59+Qpos/oC2reuUO+02XRl6Ph2ZSrkNkyisJRAfT0j9rXuCd5BoMj8=", + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHU8PxNZY8c3JTj9JI3MLVZ9EopOlYzn4tbr3U1v83oO" + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"*": "=", "0": "", "root": "root"}, + "action": { + "holdAndDelegate": "https://unused/machine/ssh/action/$SRC_NODE_ID/to/$DST_NODE_ID?local_user=$LOCAL_USER" + } + }]}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, + "ssh_rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"*": "=", "0": "", "root": "root"}, + "action": { + "holdAndDelegate": "https://unused/machine/ssh/action/$SRC_NODE_ID/to/$DST_NODE_ID?local_user=$LOCAL_USER" + } + }], + "backend_state": "Running" + }, "server": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "Hostinfo": {"Hostname": "server", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "MachineKey": "mkey:cbe57a51015f250f86670c53f4af86709a22ed7741137d9f98922e3c3e9bd210", + "Peers": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "5671268597119581": { + "ID": 5671268597119581, + "LoginName": "server.tail78f774.ts.net", + "DisplayName": "server" + }} + }, + "backend_state": "Running" + }}, + "frames": {"desk": [{"offset_ms": 3835, "response": { + "PacketFilter": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"*": "=", "0": "", "root": "root"}, + "action": { + "holdAndDelegate": "https://unused/machine/ssh/action/$SRC_NODE_ID/to/$DST_NODE_ID?local_user=$LOCAL_USER" + } + }]}, + "ControlTime": "2026-10-17T19:04:02.196196151Z" + }}], "server": [{"offset_ms": 3835, "response": { + "PacketFilter": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "ControlTime": "2026-10-17T19:04:02.195837141Z" + }}]} + }, { + "name": "baseline-before-P3", + "at": "2026-10-17T19:04:23.250301506Z", + "result": "observed", + "actions": [{ + "kind": "policy", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "status": 200, + "resp_header": {"Content-Type": "application/hujson", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }} + }, { + "kind": "wait", + "node": "server", + "args": ["filter back to the baseline"], + "offset_ms": 20 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 5028}], + "frames": { + "desk": [{"offset_ms": 0, "response": { + "SSHPolicy": {"rules": []}, + "ControlTime": "2026-10-17T19:04:23.262692602Z" + }, "empty": {"PacketFilter": "[]"}}], + "server": [{"offset_ms": 0, "response": { + "PacketFilter": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "ControlTime": "2026-10-17T19:04:23.262468514Z" + }}] + } + }, { + "name": "P3", + "at": "2026-10-17T19:04:43.280533379Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl/validate", + "header": {"Content-Type": "application/hujson"}, + "body": "\n", + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "unexpected end of JSON input"}, + "offset_ms": 2002 + }, { + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": "\n", + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "line 2, column 1: parsing value: unexpected EOF"}, + "offset_ms": 2019 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 4038 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 4054}], + "captures": {"desk": {"netmap": { + "Cached": false, + "SelfNode": { + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "Hostinfo": {"Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-admin": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "MachineKey": "mkey:b6304d7d3a900c907fbd97fed5929f5198172aa4d0c20356970a3503fa123928", + "Peers": [{ + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "server", "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936} + ], "sshHostKeys": [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn8HhupklVL9qVwnvbYhCsLsJA04NhsVUR66qZHH0gbsxFNnuWx94k0WSEYI1UeYaC8GRDbXht4I5G8VO2d4TKtXguiLiOlIqYJZTfCnNuS0Mnd67zihVrHH/O9xQq0eExSErsn92JYcb5+IPG+E8LEEog8PYWow0veeTjBU8jxXP9w5UKMeXBVkMkAYQxqOdFS9s/0x39Rloq1++RSiG82pxlDTqkvQeUEOwopAio3uFVujwGzoJsWhFxFu5HtiSbadzZ5mRe9+LP+5AeHizlkx5WR3zQkhaByQTznA2OqnziTfMHSi4CIu/JDjs/KTRza2g9K0VQmSly82HXLA9h", + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVQdWbtL7MO5gHE0bYEAKKmXJxsmmK8e59+Qpos/oC2reuUO+02XRl6Ph2ZSrkNkyisJRAfT0j9rXuCd5BoMj8=", + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHU8PxNZY8c3JTj9JI3MLVZ9EopOlYzn4tbr3U1v83oO" + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [], + "PacketFilterRules": null, + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "backend_state": "Running"}, "server": { + "packet_filter_rules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "packet_filter_matches": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "Hostinfo": {"Hostname": "server", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "MachineKey": "mkey:cbe57a51015f250f86670c53f4af86709a22ed7741137d9f98922e3c3e9bd210", + "Peers": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "PacketFilterRules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "5671268597119581": { + "ID": 5671268597119581, + "LoginName": "server.tail78f774.ts.net", + "DisplayName": "server" + }} + }, + "ssh_rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], + "backend_state": "Running" + }} + }, { + "name": "P4", + "at": "2026-10-17T19:05:06.351516067Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl/validate", + "header": {"Content-Type": "application/hujson"}, + "body": {}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {}, + "offset_ms": 2003 + }, { + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": {}, + "status": 200, + "resp_header": {"Content-Type": "application/hujson", "ETag": "{etag:4}"}, + "response": {}, + "offset_ms": 2021 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:4}"}, + "response": {}, + "offset_ms": 4040 + }, { + "kind": "wait", + "node": "server", + "args": ["filter changed"], + "offset_ms": 4057 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 6060}], + "captures": {"desk": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "Hostinfo": {"Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-admin": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "MachineKey": "mkey:b6304d7d3a900c907fbd97fed5929f5198172aa4d0c20356970a3503fa123928", + "Peers": [{ + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "server", "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936} + ], "sshHostKeys": [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn8HhupklVL9qVwnvbYhCsLsJA04NhsVUR66qZHH0gbsxFNnuWx94k0WSEYI1UeYaC8GRDbXht4I5G8VO2d4TKtXguiLiOlIqYJZTfCnNuS0Mnd67zihVrHH/O9xQq0eExSErsn92JYcb5+IPG+E8LEEog8PYWow0veeTjBU8jxXP9w5UKMeXBVkMkAYQxqOdFS9s/0x39Rloq1++RSiG82pxlDTqkvQeUEOwopAio3uFVujwGzoJsWhFxFu5HtiSbadzZ5mRe9+LP+5AeHizlkx5WR3zQkhaByQTznA2OqnziTfMHSi4CIu/JDjs/KTRza2g9K0VQmSly82HXLA9h", + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVQdWbtL7MO5gHE0bYEAKKmXJxsmmK8e59+Qpos/oC2reuUO+02XRl6Ph2ZSrkNkyisJRAfT0j9rXuCd5BoMj8=", + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHU8PxNZY8c3JTj9JI3MLVZ9EopOlYzn4tbr3U1v83oO" + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, + "backend_state": "Running" + }, "server": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "Hostinfo": {"Hostname": "server", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "MachineKey": "mkey:cbe57a51015f250f86670c53f4af86709a22ed7741137d9f98922e3c3e9bd210", + "Peers": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "5671268597119581": { + "ID": 5671268597119581, + "LoginName": "server.tail78f774.ts.net", + "DisplayName": "server" + }} + }, + "backend_state": "Running" + }}, + "frames": {"desk": [{"offset_ms": 3648, "response": { + "PacketFilter": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "ControlTime": "2026-10-17T19:05:10.384130689Z" + }}], "server": [{"offset_ms": 3648, "response": { + "PacketFilter": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "ControlTime": "2026-10-17T19:05:10.383753813Z" + }}]} + }, { + "name": "baseline-before-P5-R1", + "at": "2026-10-17T19:05:31.431770655Z", + "result": "observed", + "actions": [{ + "kind": "policy", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "status": 200, + "resp_header": {"Content-Type": "application/hujson", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }} + }, { + "kind": "wait", + "node": "server", + "args": ["filter back to the baseline"], + "offset_ms": 21 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 5026}], + "frames": {"desk": [{ + "offset_ms": 0, + "response": {"ControlTime": "2026-10-17T19:05:31.445298478Z"}, + "empty": {"PacketFilter": "[]"} + }], "server": [{"offset_ms": 0, "response": { + "PacketFilter": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "ControlTime": "2026-10-17T19:05:31.445016981Z" + }}]} + }, { + "name": "P5-R1", + "at": "2026-10-17T19:05:51.459791109Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl/validate", + "header": {"Content-Type": "application/hujson"}, + "body": "{\n\t\"tagOwners\": {\n\t\t\"tag:ci\": [\"odin@example.com\"],\n\t\t\"tag:prod\": [\"odin@example.com\"],\n\t\t\"tag:router\": [\"odin@example.com\"],\n\t\t\"tag:server\": [\"odin@example.com\"],\n\t\t\"tag:managed\": [\"tag:ci\"]\n\t},\n\t\"acls\": [{\"action\": \"accept\", \"src\": [\"*\"], \"dst\": [\"*:*\"]}]", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "line 9, column 62: parsing object after value: unexpected EOF"}, + "offset_ms": 2003 + }, { + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": "{\n\t\"tagOwners\": {\n\t\t\"tag:ci\": [\"odin@example.com\"],\n\t\t\"tag:prod\": [\"odin@example.com\"],\n\t\t\"tag:router\": [\"odin@example.com\"],\n\t\t\"tag:server\": [\"odin@example.com\"],\n\t\t\"tag:managed\": [\"tag:ci\"]\n\t},\n\t\"acls\": [{\"action\": \"accept\", \"src\": [\"*\"], \"dst\": [\"*:*\"]}]", + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "line 9, column 62: parsing object after value: unexpected EOF"}, + "offset_ms": 2020 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 4039 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 4056}], + "captures": {"desk": {"netmap": { + "Cached": false, + "SelfNode": { + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "Hostinfo": {"Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-admin": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "MachineKey": "mkey:b6304d7d3a900c907fbd97fed5929f5198172aa4d0c20356970a3503fa123928", + "Peers": [{ + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "server", "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936} + ], "sshHostKeys": [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn8HhupklVL9qVwnvbYhCsLsJA04NhsVUR66qZHH0gbsxFNnuWx94k0WSEYI1UeYaC8GRDbXht4I5G8VO2d4TKtXguiLiOlIqYJZTfCnNuS0Mnd67zihVrHH/O9xQq0eExSErsn92JYcb5+IPG+E8LEEog8PYWow0veeTjBU8jxXP9w5UKMeXBVkMkAYQxqOdFS9s/0x39Rloq1++RSiG82pxlDTqkvQeUEOwopAio3uFVujwGzoJsWhFxFu5HtiSbadzZ5mRe9+LP+5AeHizlkx5WR3zQkhaByQTznA2OqnziTfMHSi4CIu/JDjs/KTRza2g9K0VQmSly82HXLA9h", + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVQdWbtL7MO5gHE0bYEAKKmXJxsmmK8e59+Qpos/oC2reuUO+02XRl6Ph2ZSrkNkyisJRAfT0j9rXuCd5BoMj8=", + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHU8PxNZY8c3JTj9JI3MLVZ9EopOlYzn4tbr3U1v83oO" + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [], + "PacketFilterRules": null, + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "backend_state": "Running"}, "server": { + "packet_filter_rules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "packet_filter_matches": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "Hostinfo": {"Hostname": "server", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "MachineKey": "mkey:cbe57a51015f250f86670c53f4af86709a22ed7741137d9f98922e3c3e9bd210", + "Peers": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "PacketFilterRules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "5671268597119581": { + "ID": 5671268597119581, + "LoginName": "server.tail78f774.ts.net", + "DisplayName": "server" + }} + }, + "ssh_rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], + "backend_state": "Running" + }} + }, { + "name": "P5-R2", + "at": "2026-10-17T19:06:14.538928082Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl/validate", + "header": {"Content-Type": "application/hujson"}, + "body": { + "acls": [{"action": "accept", "dst": ["*:*"], "src": ["*"]}], + "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }, + "tests": [{"deny": ["tag:server:22"], "src": "odin@example.com"}] + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"data": [{"errors": [ + "[acl test error]: address \"tag:server:22\" (protocol \"tcp\"): want: Drop, got: Accept" + ], "user": "odin@example.com"}], "message": "test(s) failed"}, + "offset_ms": 2002 + }, { + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": { + "acls": [{"action": "accept", "dst": ["*:*"], "src": ["*"]}], + "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }, + "tests": [{"deny": ["tag:server:22"], "src": "odin@example.com"}] + }, + "status": 400, + "resp_header": {"Content-Type": "application/json"}, + "response": {"data": [{"errors": [ + "[acl test error]: address \"tag:server:22\" (protocol \"tcp\"): want: Drop, got: Accept" + ], "user": "odin@example.com"}], "message": "test(s) failed"}, + "offset_ms": 2021 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 4041 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 4058}], + "captures": {"desk": {"netmap": { + "Cached": false, + "SelfNode": { + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "Hostinfo": {"Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-admin": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "MachineKey": "mkey:b6304d7d3a900c907fbd97fed5929f5198172aa4d0c20356970a3503fa123928", + "Peers": [{ + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "server", "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936} + ], "sshHostKeys": [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn8HhupklVL9qVwnvbYhCsLsJA04NhsVUR66qZHH0gbsxFNnuWx94k0WSEYI1UeYaC8GRDbXht4I5G8VO2d4TKtXguiLiOlIqYJZTfCnNuS0Mnd67zihVrHH/O9xQq0eExSErsn92JYcb5+IPG+E8LEEog8PYWow0veeTjBU8jxXP9w5UKMeXBVkMkAYQxqOdFS9s/0x39Rloq1++RSiG82pxlDTqkvQeUEOwopAio3uFVujwGzoJsWhFxFu5HtiSbadzZ5mRe9+LP+5AeHizlkx5WR3zQkhaByQTznA2OqnziTfMHSi4CIu/JDjs/KTRza2g9K0VQmSly82HXLA9h", + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVQdWbtL7MO5gHE0bYEAKKmXJxsmmK8e59+Qpos/oC2reuUO+02XRl6Ph2ZSrkNkyisJRAfT0j9rXuCd5BoMj8=", + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHU8PxNZY8c3JTj9JI3MLVZ9EopOlYzn4tbr3U1v83oO" + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [], + "PacketFilterRules": null, + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "backend_state": "Running"}, "server": { + "packet_filter_rules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "packet_filter_matches": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "Hostinfo": {"Hostname": "server", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "MachineKey": "mkey:cbe57a51015f250f86670c53f4af86709a22ed7741137d9f98922e3c3e9bd210", + "Peers": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "PacketFilterRules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "5671268597119581": { + "ID": 5671268597119581, + "LoginName": "server.tail78f774.ts.net", + "DisplayName": "server" + }} + }, + "ssh_rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], + "backend_state": "Running" + }}, + "frames": { + "desk": [{"offset_ms": 11461, "response": {"KeepAlive": true}}], + "server": [{"offset_ms": 13461, "response": {"KeepAlive": true}}] + } + }, { + "name": "setup-stale-etag", + "at": "2026-10-17T19:06:37.610516241Z", + "result": "observed", + "actions": [{ + "kind": "policy", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "hosts": {"prior": "192.0.2.11"}, "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "status": 200, + "resp_header": {"Content-Type": "application/hujson", "ETag": "{etag:5}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "hosts": {"prior": "192.0.2.11"}, "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }} + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:5}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "hosts": {"prior": "192.0.2.11"}, "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 19 + }, { + "kind": "policy", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "status": 200, + "resp_header": {"Content-Type": "application/hujson", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 36 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 2038 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 2055}] + }, { + "name": "P6-stale", + "at": "2026-10-17T19:06:54.680394548Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 2002 + }, { + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson", "If-Match": "{etag:5}"}, + "body": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "hosts": {"spare": "192.0.2.10"}, "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "status": 412, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "precondition failed, invalid old hash"}, + "offset_ms": 2020 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 2037 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 2053}], + "captures": {"desk": {"netmap": { + "Cached": false, + "SelfNode": { + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "Hostinfo": {"Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-admin": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "MachineKey": "mkey:b6304d7d3a900c907fbd97fed5929f5198172aa4d0c20356970a3503fa123928", + "Peers": [{ + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "server", "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936} + ], "sshHostKeys": [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn8HhupklVL9qVwnvbYhCsLsJA04NhsVUR66qZHH0gbsxFNnuWx94k0WSEYI1UeYaC8GRDbXht4I5G8VO2d4TKtXguiLiOlIqYJZTfCnNuS0Mnd67zihVrHH/O9xQq0eExSErsn92JYcb5+IPG+E8LEEog8PYWow0veeTjBU8jxXP9w5UKMeXBVkMkAYQxqOdFS9s/0x39Rloq1++RSiG82pxlDTqkvQeUEOwopAio3uFVujwGzoJsWhFxFu5HtiSbadzZ5mRe9+LP+5AeHizlkx5WR3zQkhaByQTznA2OqnziTfMHSi4CIu/JDjs/KTRza2g9K0VQmSly82HXLA9h", + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVQdWbtL7MO5gHE0bYEAKKmXJxsmmK8e59+Qpos/oC2reuUO+02XRl6Ph2ZSrkNkyisJRAfT0j9rXuCd5BoMj8=", + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHU8PxNZY8c3JTj9JI3MLVZ9EopOlYzn4tbr3U1v83oO" + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [], + "PacketFilterRules": null, + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "backend_state": "Running"}, "server": { + "packet_filter_rules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "packet_filter_matches": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "Hostinfo": {"Hostname": "server", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "MachineKey": "mkey:cbe57a51015f250f86670c53f4af86709a22ed7741137d9f98922e3c3e9bd210", + "Peers": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "PacketFilterRules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "5671268597119581": { + "ID": 5671268597119581, + "LoginName": "server.tail78f774.ts.net", + "DisplayName": "server" + }} + }, + "ssh_rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], + "backend_state": "Running" + }} + }, { + "name": "P6-current", + "at": "2026-10-17T19:07:15.748846325Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 2002 + }, { + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson", "If-Match": "{etag:2}"}, + "body": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "hosts": {"spare": "192.0.2.10"}, "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "status": 200, + "resp_header": {"Content-Type": "application/hujson", "ETag": "{etag:6}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "hosts": {"spare": "192.0.2.10"}, "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 2020 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:6}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "hosts": {"spare": "192.0.2.10"}, "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 2039 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 2055}], + "captures": {"desk": {"netmap": { + "Cached": false, + "SelfNode": { + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "Hostinfo": {"Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-admin": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "MachineKey": "mkey:b6304d7d3a900c907fbd97fed5929f5198172aa4d0c20356970a3503fa123928", + "Peers": [{ + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "server", "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936} + ], "sshHostKeys": [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn8HhupklVL9qVwnvbYhCsLsJA04NhsVUR66qZHH0gbsxFNnuWx94k0WSEYI1UeYaC8GRDbXht4I5G8VO2d4TKtXguiLiOlIqYJZTfCnNuS0Mnd67zihVrHH/O9xQq0eExSErsn92JYcb5+IPG+E8LEEog8PYWow0veeTjBU8jxXP9w5UKMeXBVkMkAYQxqOdFS9s/0x39Rloq1++RSiG82pxlDTqkvQeUEOwopAio3uFVujwGzoJsWhFxFu5HtiSbadzZ5mRe9+LP+5AeHizlkx5WR3zQkhaByQTznA2OqnziTfMHSi4CIu/JDjs/KTRza2g9K0VQmSly82HXLA9h", + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVQdWbtL7MO5gHE0bYEAKKmXJxsmmK8e59+Qpos/oC2reuUO+02XRl6Ph2ZSrkNkyisJRAfT0j9rXuCd5BoMj8=", + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHU8PxNZY8c3JTj9JI3MLVZ9EopOlYzn4tbr3U1v83oO" + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [], + "PacketFilterRules": null, + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "backend_state": "Running"}, "server": { + "packet_filter_rules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "packet_filter_matches": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "Hostinfo": {"Hostname": "server", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "MachineKey": "mkey:cbe57a51015f250f86670c53f4af86709a22ed7741137d9f98922e3c3e9bd210", + "Peers": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "PacketFilterRules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "5671268597119581": { + "ID": 5671268597119581, + "LoginName": "server.tail78f774.ts.net", + "DisplayName": "server" + }} + }, + "ssh_rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], + "backend_state": "Running" + }}, + "frames": {"server": [{"offset_ms": 17251, "request": { + "Version": 142, + "Compress": "zstd", + "KeepAlive": true, + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Stream": true, + "Hostinfo": { + "IPNVersion": "1.102.5-ERR-BuildInfo", + "BackendLogID": "anonymized", + "OS": "linux", + "OSVersion": "anonymized", + "Container": false, + "Distro": "anonymized", + "DistroVersion": "anonymized", + "DistroCodeName": "anonymized", + "Desktop": false, + "Hostname": "server", + "NoLogsNoSupport": true, + "Machine": "anonymized", + "GoArch": "amd64", + "GoArchVar": "v1", + "GoVersion": "go1.27.1", + "RequestTags": ["tag:server"], + "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ], + "NetInfo": { + "MappingVariesByDestIP": false, + "WorkingIPv6": false, + "OSHasIPv6": true, + "WorkingUDP": true, + "WorkingICMPv4": false, + "UPnP": false, + "PMP": false, + "PCP": false, + "PreferredDERP": 14, + "DERPLatency": { + "1-v4": 0, + "10-v4": 0, + "12-v4": 0, + "13-v4": 0, + "14-v4": 0, + "15-v4": 0, + "16-v4": 0, + "17-v4": 0, + "18-v4": 0, + "19-v4": 0, + "2-v4": 0, + "20-v4": 0, + "21-v4": 0, + "22-v4": 0, + "23-v4": 0, + "24-v4": 0, + "25-v4": 0, + "26-v4": 0, + "27-v4": 0, + "28-v4": 0, + "3-v4": 0, + "4-v4": 0, + "6-v4": 0, + "7-v4": 0, + "8-v4": 0, + "9-v4": 0 + } + }, + "sshHostKeys": [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn8HhupklVL9qVwnvbYhCsLsJA04NhsVUR66qZHH0gbsxFNnuWx94k0WSEYI1UeYaC8GRDbXht4I5G8VO2d4TKtXguiLiOlIqYJZTfCnNuS0Mnd67zihVrHH/O9xQq0eExSErsn92JYcb5+IPG+E8LEEog8PYWow0veeTjBU8jxXP9w5UKMeXBVkMkAYQxqOdFS9s/0x39Rloq1++RSiG82pxlDTqkvQeUEOwopAio3uFVujwGzoJsWhFxFu5HtiSbadzZ5mRe9+LP+5AeHizlkx5WR3zQkhaByQTznA2OqnziTfMHSi4CIu/JDjs/KTRza2g9K0VQmSly82HXLA9h", + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVQdWbtL7MO5gHE0bYEAKKmXJxsmmK8e59+Qpos/oC2reuUO+02XRl6Ph2ZSrkNkyisJRAfT0j9rXuCd5BoMj8=", + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHU8PxNZY8c3JTj9JI3MLVZ9EopOlYzn4tbr3U1v83oO" + ], + "Userspace": true, + "UserspaceRouter": true, + "AppConnector": false, + "StateEncrypted": false + }, + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "EndpointTypes": [2, 1, 1, 1], + "DebugFlags": ["netstack"] + }}, {"offset_ms": 18251, "response": { + "Node": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "Hostinfo": {"Hostname": "server", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + } + }, + "PeersChanged": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "DERP": "127.3.3.40:14", + "Hostinfo": {"OS": "linux", "Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true + }], + "DNSConfig": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "Domain": "odin@example.com", + "PacketFilter": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "UserProfiles": [{ + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, { + "ID": 5671268597119581, + "LoginName": "server.tail78f774.ts.net", + "DisplayName": "server" + }], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "ControlTime": "2026-10-17T19:07:34.143053391Z" + }, "dropped": ["DERPMap", "ControlDialPlan"]}]} + }, { + "name": "baseline-before-P6-ts-default", + "at": "2026-10-17T19:07:36.816010862Z", + "result": "observed", + "actions": [{ + "kind": "policy", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "status": 200, + "resp_header": {"Content-Type": "application/hujson", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }} + }, { + "kind": "wait", + "node": "server", + "args": ["filter back to the baseline"], + "offset_ms": 18 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 2021}] + }, { + "name": "P6-ts-default", + "at": "2026-10-17T19:07:53.837927183Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson", "If-Match": "\"ts-default\""}, + "body": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "hosts": {"spare": "192.0.2.10"}, "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "status": 412, + "resp_header": {"Content-Type": "application/json"}, + "response": {"message": "precondition failed, invalid old hash"}, + "offset_ms": 2003 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/json"}, + "status": 200, + "resp_header": {"Content-Type": "application/json", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 2021 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 2037}], + "captures": {"desk": {"netmap": { + "Cached": false, + "SelfNode": { + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "Hostinfo": {"Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-admin": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "MachineKey": "mkey:b6304d7d3a900c907fbd97fed5929f5198172aa4d0c20356970a3503fa123928", + "Peers": [{ + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "server", "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936} + ], "sshHostKeys": [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn8HhupklVL9qVwnvbYhCsLsJA04NhsVUR66qZHH0gbsxFNnuWx94k0WSEYI1UeYaC8GRDbXht4I5G8VO2d4TKtXguiLiOlIqYJZTfCnNuS0Mnd67zihVrHH/O9xQq0eExSErsn92JYcb5+IPG+E8LEEog8PYWow0veeTjBU8jxXP9w5UKMeXBVkMkAYQxqOdFS9s/0x39Rloq1++RSiG82pxlDTqkvQeUEOwopAio3uFVujwGzoJsWhFxFu5HtiSbadzZ5mRe9+LP+5AeHizlkx5WR3zQkhaByQTznA2OqnziTfMHSi4CIu/JDjs/KTRza2g9K0VQmSly82HXLA9h", + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVQdWbtL7MO5gHE0bYEAKKmXJxsmmK8e59+Qpos/oC2reuUO+02XRl6Ph2ZSrkNkyisJRAfT0j9rXuCd5BoMj8=", + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHU8PxNZY8c3JTj9JI3MLVZ9EopOlYzn4tbr3U1v83oO" + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [], + "PacketFilterRules": null, + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "backend_state": "Running"}, "server": { + "packet_filter_rules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "packet_filter_matches": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "Hostinfo": {"Hostname": "server", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "MachineKey": "mkey:cbe57a51015f250f86670c53f4af86709a22ed7741137d9f98922e3c3e9bd210", + "Peers": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "PacketFilterRules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "5671268597119581": { + "ID": 5671268597119581, + "LoginName": "server.tail78f774.ts.net", + "DisplayName": "server" + }} + }, + "ssh_rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], + "backend_state": "Running" + }}, + "frames": {"server": [{"offset_ms": 17162, "response": {"KeepAlive": true}}]} + }, { + "name": "P7", + "at": "2026-10-17T19:08:14.898068219Z", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": "{\n\t// kept through the API\n\t\"tagOwners\": {\n\t\t\"tag:ci\": [\"odin@example.com\"],\n\t\t\"tag:prod\": [\"odin@example.com\"],\n\t\t\"tag:router\": [\"odin@example.com\"],\n\t\t\"tag:server\": [\"odin@example.com\"],\n\t\t\"tag:managed\": [\"tag:ci\"]\n\t},\n\t\"grants\": [{\"src\": [\"autogroup:member\"], \"dst\": [\"tag:server\"], \"ip\": [\"tcp:22\"]}],\n\t\"ssh\": [{\"action\": \"accept\", \"src\": [\"autogroup:member\"], \"dst\": [\"tag:server\"], \"users\": [\"root\"]}],\n}", + "status": 200, + "resp_header": {"Content-Type": "application/hujson", "ETag": "{etag:7}"}, + "response": "{\n\t// kept through the API\n\t\"tagOwners\": {\n\t\t\"tag:ci\": [\"odin@example.com\"],\n\t\t\"tag:prod\": [\"odin@example.com\"],\n\t\t\"tag:router\": [\"odin@example.com\"],\n\t\t\"tag:server\": [\"odin@example.com\"],\n\t\t\"tag:managed\": [\"tag:ci\"],\n\t},\n\t\"grants\": [\n\t\t{\"src\": [\"autogroup:member\"], \"dst\": [\"tag:server\"], \"ip\": [\"tcp:22\"]},\n\t],\n\t\"ssh\": [{\n\t\t\"action\": \"accept\",\n\t\t\"src\": [\"autogroup:member\"],\n\t\t\"dst\": [\"tag:server\"],\n\t\t\"users\": [\"root\"],\n\t}],\n}\n", + "offset_ms": 2003 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/acl", + "header": {"Accept": "application/hujson"}, + "status": 200, + "resp_header": {"Content-Type": "application/hujson", "ETag": "{etag:7}"}, + "response": "{\n\t// kept through the API\n\t\"tagOwners\": {\n\t\t\"tag:ci\": [\"odin@example.com\"],\n\t\t\"tag:prod\": [\"odin@example.com\"],\n\t\t\"tag:router\": [\"odin@example.com\"],\n\t\t\"tag:server\": [\"odin@example.com\"],\n\t\t\"tag:managed\": [\"tag:ci\"],\n\t},\n\t\"grants\": [\n\t\t{\"src\": [\"autogroup:member\"], \"dst\": [\"tag:server\"], \"ip\": [\"tcp:22\"]},\n\t],\n\t\"ssh\": [{\n\t\t\"action\": \"accept\",\n\t\t\"src\": [\"autogroup:member\"],\n\t\t\"dst\": [\"tag:server\"],\n\t\t\"users\": [\"root\"],\n\t}],\n}\n", + "offset_ms": 2023 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 2039}], + "captures": {"desk": {"netmap": { + "Cached": false, + "SelfNode": { + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "Hostinfo": {"Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-admin": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "MachineKey": "mkey:b6304d7d3a900c907fbd97fed5929f5198172aa4d0c20356970a3503fa123928", + "Peers": [{ + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "server", "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936} + ], "sshHostKeys": [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn8HhupklVL9qVwnvbYhCsLsJA04NhsVUR66qZHH0gbsxFNnuWx94k0WSEYI1UeYaC8GRDbXht4I5G8VO2d4TKtXguiLiOlIqYJZTfCnNuS0Mnd67zihVrHH/O9xQq0eExSErsn92JYcb5+IPG+E8LEEog8PYWow0veeTjBU8jxXP9w5UKMeXBVkMkAYQxqOdFS9s/0x39Rloq1++RSiG82pxlDTqkvQeUEOwopAio3uFVujwGzoJsWhFxFu5HtiSbadzZ5mRe9+LP+5AeHizlkx5WR3zQkhaByQTznA2OqnziTfMHSi4CIu/JDjs/KTRza2g9K0VQmSly82HXLA9h", + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVQdWbtL7MO5gHE0bYEAKKmXJxsmmK8e59+Qpos/oC2reuUO+02XRl6Ph2ZSrkNkyisJRAfT0j9rXuCd5BoMj8=", + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHU8PxNZY8c3JTj9JI3MLVZ9EopOlYzn4tbr3U1v83oO" + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [], + "PacketFilterRules": null, + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "backend_state": "Running"}, "server": { + "packet_filter_rules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "packet_filter_matches": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 5671268597119581, + "StableID": "ntrfaLcXHm11CNTRL", + "Name": "server.tail78f774.ts.net.", + "User": 5671268597119581, + "Key": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "DiscoKey": "discokey:3f1ca49e92111f937a780e8a42ac9aeb6d9d7d459dbaeec6f2ce18d15cd33332", + "Addresses": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "AllowedIPs": ["100.107.106.51/32", "fd7a:115c:a1e0::e328:6a34/128"], + "Endpoints": [ + "192.0.2.1:56132", + "198.51.100.1:56132", + "198.51.100.2:56132", + "198.51.100.3:56132" + ], + "Hostinfo": {"Hostname": "server", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 40936}, + {"Proto": "peerapi6", "Port": 40936}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-17T19:03:07.475757344Z", + "Tags": ["tag:server"], + "MachineAuthorized": true, + "CapMap": { + "default-auto-update": [false], + "https://tailscale.com/cap/file-sharing": null, + "https://tailscale.com/cap/is-owner": null, + "https://tailscale.com/cap/ssh": null, + "https://tailscale.com/cap/tailnet-lock": null, + "probe-udp-lifetime": null, + "ssh-behavior-v1": null, + "ssh-env-vars": null, + "store-appc-routes": null, + "tailnet-display-name": ["odin@example.com"] + }, + "ComputedName": "server", + "ComputedNameWithHost": "server" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-owner", + "https://tailscale.com/cap/ssh", + "https://tailscale.com/cap/tailnet-lock", + "probe-udp-lifetime", + "ssh-behavior-v1", + "ssh-env-vars", + "store-appc-routes", + "tailnet-display-name" + ], + "NodeKey": "nodekey:93307dab1e6d5e7adf998eacf6c9a3c15f77a25c7a61653f1dfe0e77e3eb6a33", + "MachineKey": "mkey:cbe57a51015f250f86670c53f4af86709a22ed7741137d9f98922e3c3e9bd210", + "Peers": [{ + "ID": 1833358735216660, + "StableID": "nVmZP4ELKF11CNTRL", + "Name": "desk.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:0ba47651273a64dc05643ebc4ed34415fe17aef5e439537cebc2a92c305e714d", + "KeyExpiry": "2027-04-15T19:03:09Z", + "DiscoKey": "discokey:17f08f7f262fbf143cdb7fcd0419364346781910acebe93cef33b30c94139143", + "Addresses": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "AllowedIPs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "Endpoints": [ + "192.0.2.1:36605", + "198.51.100.1:36605", + "198.51.100.2:36605", + "198.51.100.3:36605" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "desk", "Services": [ + {"Proto": "peerapi4", "Port": 44850}, + {"Proto": "peerapi6", "Port": 44850} + ]}, + "Created": "2026-10-17T19:03:09.4454174Z", + "Cap": 142, + "Online": true, + "ComputedName": "desk", + "ComputedNameWithHost": "desk" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6], + "Srcs": ["100.94.113.77/32", "fd7a:115c:a1e0::3028:714e/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.107.106.51/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::e328:6a34/128", "Ports": {"First": 22, "Last": 22}} + ], + "Caps": [] + }], + "PacketFilterRules": [{"SrcIPs": ["100.94.113.77", "fd7a:115c:a1e0::3028:714e"], "DstPorts": [ + {"IP": "100.107.106.51", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::e328:6a34", "Ports": {"First": 22, "Last": 22}} + ], "IPProto": [6]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "5671268597119581": { + "ID": 5671268597119581, + "LoginName": "server.tail78f774.ts.net", + "DisplayName": "server" + }} + }, + "ssh_rules": [{ + "principals": [{"nodeIP": "100.94.113.77"}, {"nodeIP": "fd7a:115c:a1e0::3028:714e"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], + "backend_state": "Running" + }} + }, { + "name": "restore", + "at": "2026-10-17T19:08:35.948570935Z", + "result": "observed", + "actions": [{ + "kind": "policy", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "status": 200, + "resp_header": {"Content-Type": "application/hujson", "ETag": "{etag:2}"}, + "response": {"grants": [ + {"dst": ["tag:server"], "ip": ["tcp:22"], "src": ["autogroup:member"]} + ], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": { + "tag:ci": ["odin@example.com"], + "tag:managed": ["tag:ci"], + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }} + }, { + "kind": "wait", + "node": "server", + "args": ["filter back to the baseline"], + "offset_ms": 19 + }, {"kind": "wait", "args": ["15s"], "offset_ms": 2022}] + }] +}