From 8bb0454fce52655b7538a6e9dd390d7fd468ce07 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Tue, 20 Oct 2026 21:46:50 +0000 Subject: [PATCH] policy/v2, servertest: add policy generation golden data One policy over joins, a via router swap, an admin tag, a delete and a group edit; filter, SSH, peers and routes per step, and the manager against a fresh one. --- .../v2/tailscale_sequence_compat_test.go | 422 + hscontrol/servertest/mapstream_compat_test.go | 232 +- .../testdata/steps/policy-generation.hujson | 18896 ++++++++++++++++ hscontrol/servertest/via_compat_test.go | 10 +- hscontrol/servertest/via_ha_compat_test.go | 4 + 5 files changed, 19544 insertions(+), 20 deletions(-) create mode 100644 hscontrol/policy/v2/tailscale_sequence_compat_test.go create mode 100644 hscontrol/servertest/testdata/steps/policy-generation.hujson diff --git a/hscontrol/policy/v2/tailscale_sequence_compat_test.go b/hscontrol/policy/v2/tailscale_sequence_compat_test.go new file mode 100644 index 000000000..b02d898bf --- /dev/null +++ b/hscontrol/policy/v2/tailscale_sequence_compat_test.go @@ -0,0 +1,422 @@ +// Compatibility tests for one policy compiled again and again as the nodes +// under it change: members join, a second via router joins and the first +// withdraws its routes, the admin tags one member's device and deletes +// another, then the group the policy names everywhere is edited. Each step +// is compared with what Tailscale SaaS sent every live node. +// +// Test data source: ../../servertest/testdata/steps/policy-generation.hujson, +// loaded by name; TestPolicySequenceMapCompat in ../../servertest replays it +// through real clients. +// Source format: github.com/juanfont/headscale/hscontrol/types/testcapture + +package v2 + +import ( + "encoding/json" + "fmt" + "maps" + "net/http" + "net/netip" + "path/filepath" + "slices" + "strings" + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/juanfont/headscale/hscontrol/types" + "github.com/juanfont/headscale/hscontrol/types/testcapture" + "github.com/stretchr/testify/require" + "tailscale.com/tailcfg" +) + +// policySequenceSkipReasons lists checks where headscale differs from SaaS, +// keyed ///. A listed check that matches fails, +// so a fix must delete its entry. +var policySequenceSkipReasons = map[string]string{ + "policy-generation/G0/srv/filter": aclDstDedupe, + "policy-generation/G1/srv/filter": aclDstDedupe, + "policy-generation/G2/srv/filter": aclDstDedupe, + "policy-generation/G3/srv/filter": aclDstDedupe, + "policy-generation/G4/srv/filter": aclDstDedupe, + "policy-generation/G5/srv/filter": aclDstDedupe, + + "policy-generation/G0/rt/filter": viaRuleMerged, + "policy-generation/G1/rt/filter": viaRuleMerged, + "policy-generation/G2/rt/filter": viaRuleMerged, + "policy-generation/G3/rt/filter": viaRuleMerged, + "policy-generation/G3/rt-b/filter": viaRuleMerged, + "policy-generation/G4/rt-b/filter": viaRuleMerged, + "policy-generation/G5/rt-b/filter": viaRuleMerged, + + "policy-generation/G0/odin-1/uid-zero": sshUIDZero, + "policy-generation/G0/srv/uid-zero": sshUIDZero, + "policy-generation/G0/thor-1/uid-zero": sshUIDZero, + "policy-generation/G1/freya-1/uid-zero": sshUIDZero, + "policy-generation/G1/odin-1/uid-zero": sshUIDZero, + "policy-generation/G1/srv/uid-zero": sshUIDZero, + "policy-generation/G1/thor-1/uid-zero": sshUIDZero, + "policy-generation/G2/freya-1/uid-zero": sshUIDZero, + "policy-generation/G2/odin-1/uid-zero": sshUIDZero, + "policy-generation/G2/srv/uid-zero": sshUIDZero, + "policy-generation/G2/thor-1/uid-zero": sshUIDZero, + "policy-generation/G2/thor-2/uid-zero": sshUIDZero, + "policy-generation/G3/freya-1/uid-zero": sshUIDZero, + "policy-generation/G3/odin-1/uid-zero": sshUIDZero, + "policy-generation/G3/srv/uid-zero": sshUIDZero, + "policy-generation/G3/thor-1/uid-zero": sshUIDZero, + "policy-generation/G3/thor-2/uid-zero": sshUIDZero, + "policy-generation/G4/freya-1/uid-zero": sshUIDZero, + "policy-generation/G4/odin-1/uid-zero": sshUIDZero, + "policy-generation/G4/srv/uid-zero": sshUIDZero, + "policy-generation/G4/thor-1/uid-zero": sshUIDZero, + "policy-generation/G4/thor-2/uid-zero": sshUIDZero, + "policy-generation/G5/freya-1/uid-zero": sshUIDZero, + "policy-generation/G5/odin-1/uid-zero": sshUIDZero, + "policy-generation/G5/srv/uid-zero": sshUIDZero, + "policy-generation/G5/thor-2/uid-zero": sshUIDZero, + "policy-generation/G7/freya-1/uid-zero": sshUIDZero, + "policy-generation/G7/odin-1/uid-zero": sshUIDZero, + "policy-generation/G7/srv/uid-zero": sshUIDZero, + "policy-generation/G8/freya-1/uid-zero": sshUIDZero, + "policy-generation/G8/odin-1/uid-zero": sshUIDZero, +} + +const viaRuleMerged = "VIA_RULE_MERGED: on a via router headscale merges the via grant's filter rule with an ACL rule of the same sources; SaaS sends the two apart" + +// policySequenceNotCompared lists, by key prefix, checks left out: SaaS's +// answer there is in doubt, so it is no reference. +var policySequenceNotCompared = []string{ + "policy-generation/G7/rt-plain/filter", + "policy-generation/G7/srv/ssh-rules", + "policy-generation/G7/srv/filter", + "policy-generation/G7/rt-b/filter", +} + +// TestPolicySequenceCompat follows the capture with one PolicyManager, as +// headscale does: SetNodes after each node change, SetPolicy for the edit, +// with nodes rebuilt from the step's device list and route reads. After each +// step it compares, per node SaaS captured, the filter and SSH rules, and +// the auto-approval of routes the step advertised. At every step the manager +// must also answer as one built from that step's inputs alone, so a cache +// that outlives its inputs shows without SaaS. +func TestPolicySequenceCompat(t *testing.T) { + t.Parallel() + + t.Run("policy-generation", func(t *testing.T) { + t.Parallel() + + runPolicySequenceCompat(t, "policy-generation") + }) +} + +// runPolicySequenceCompat replays capture id step by step. Steps run in +// order, since the one manager carries each into the next. +func runPolicySequenceCompat(t *testing.T, id string) { + 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) + + users := setupGrantsCompatUsers() + + // Node IDs follow join order, as headscale would assign them. + ids := map[string]types.NodeID{} + + var ( + pm *PolicyManager + policy []byte + ) + + evaluated := map[string]bool{} + + for _, step := range c.Steps { + require.Equal(t, "observed", step.Result, "%s: the replay follows every step", step.Name) + + for _, a := range step.Actions { + if _, ok := ids[a.Node]; a.Kind == "join" && !ok { + ids[a.Node] = types.NodeID(len(ids) + 1) //nolint:gosec // a handful of nodes + } + } + + nodes, approved := sequenceNodes(t, users, step, ids) + pushed := stepPolicy(t, step) + + if pm == nil { + require.NotNil(t, pushed, "%s: the first step sets the policy", step.Name) + + policy = pushed + pm, err = NewPolicyManager(policy, users, nodes.ViewSlice()) + require.NoError(t, err, "%s: policy", step.Name) + } else { + _, err = pm.SetNodes(nodes.ViewSlice()) + require.NoError(t, err, "%s: nodes", step.Name) + + if pushed != nil { + policy = pushed + _, err = pm.SetPolicy(policy) + require.NoError(t, err, "%s: policy", step.Name) + } + } + + pol, err := unmarshalPolicy(policy) + require.NoError(t, err, "%s: policy", step.Name) + + fresh, err := NewPolicyManager(policy, users, nodes.ViewSlice()) + require.NoError(t, err, "%s: policy", step.Name) + + t.Run(step.Name, func(t *testing.T) { + t.Run("fresh", func(t *testing.T) { + if diff := freshMismatch(pm, fresh, nodes); diff != "" { + t.Error(diff) + } + }) + + for _, alias := range slices.Sorted(maps.Keys(step.Captures)) { + capture := step.Captures[alias] + node := findGrantsNode(nodes, alias) + require.NotNil(t, node, "%s: %s is not in the device list", step.Name, alias) + + key := id + "/" + step.Name + "/" + alias + "/" + + t.Run(alias, func(t *testing.T) { + check := func(name string, mismatch func() string) { + if notCompared(policySequenceNotCompared, key+name) { + return + } + + evaluated[key+name] = true + compatCheck(t, policySequenceSkipReasons, key+name, mismatch) + } + + check("filter", func() string { + got, err := pm.FilterForNode(node.View()) + if err != nil { + return err.Error() + } + + return cmp.Diff(capture.PacketFilterRules, got, append(cmpOptions(), cmpopts.EquateEmpty())...) + }) + + check("ssh-rules", func() string { + return sshRulesMismatch(pol, pm, users, nodes, node, capture, withoutUIDZero) + }) + + check("uid-zero", func() string { + return uidZeroMismatch(pm, node, capture) + }) + + // Approval is judged only where the step advertised: + // approvals that outlive eligibility are not asked here. + if advertised := joinRoutes(step, alias); len(advertised) > 0 { + check("auto-approval", func() string { + var want, got []string + + for _, p := range advertised { + want = append(want, fmt.Sprintf("%s %t", p, slices.Contains(approved[alias], p))) + got = append(got, fmt.Sprintf("%s %t", p, pm.NodeCanApproveRoute(node.View(), p))) + } + + return cmp.Diff(want, got) + }) + } + }) + } + }) + } + + // The map serves this one capture, so a key naming another fails too. + for k := range policySequenceSkipReasons { + if !evaluated[k] { + t.Errorf("skip entry %q names no check", k) + } + } +} + +// freshMismatch compares the manager that followed every step with one built +// from the step's inputs alone: per node its filter, SSH policy and via +// routes towards every peer, and the peer map; "" is a match. +func freshMismatch(pm, fresh *PolicyManager, nodes types.Nodes) string { + opts := cmpopts.EquateComparable(netip.Prefix{}, netip.Addr{}) + + var diffs []string + + add := func(what string, want, got any, errs ...error) { + for _, err := range errs { + if err != nil { + diffs = append(diffs, what+": "+err.Error()) + + return + } + } + + if diff := cmp.Diff(want, got, opts); diff != "" { + diffs = append(diffs, fmt.Sprintf("%s (-fresh +incremental):\n%s", what, diff)) + } + } + + for _, n := range nodes { + nv := n.View() + + wantFilter, errW := fresh.FilterForNode(nv) + gotFilter, errG := pm.FilterForNode(nv) + add(n.GivenName+" filter", wantFilter, gotFilter, errW, errG) + + wantSSH, errW := fresh.SSHPolicy("https://unused", nv) + gotSSH, errG := pm.SSHPolicy("https://unused", nv) + add(n.GivenName+" SSH policy", wantSSH, gotSSH, errW, errG) + + for _, p := range nodes { + if p.ID != n.ID { + add(n.GivenName+" via routes of "+p.GivenName, + fresh.ViaRoutesForPeer(nv, p.View()), pm.ViaRoutesForPeer(nv, p.View())) + } + } + } + + add("peer map", fresh.BuildPeerMap(nodes.ViewSlice()), pm.BuildPeerMap(nodes.ViewSlice())) + + return strings.Join(diffs, "\n") +} + +// sequenceDevice is the part of a SaaS device-list entry a node is built +// from. The ID is the capture's "{device:}" label. +type sequenceDevice struct { + ID string `json:"id"` + Addresses []string `json:"addresses"` + Tags []string `json:"tags"` + User string `json:"user"` +} + +// sequenceNodes builds the nodes SaaS listed after step: addresses, tags and, +// for untagged devices, the owner from the device list; advertised and +// approved routes from the step's route reads. It also returns each node's +// approved routes. A tagged node has no user, as headscale stores it. +func sequenceNodes( + t *testing.T, + users types.Users, + step testcapture.Step, + ids map[string]types.NodeID, +) (types.Nodes, map[string][]netip.Prefix) { + t.Helper() + + var ( + devices []sequenceDevice + listed bool + advertised = map[string][]netip.Prefix{} + approved = map[string][]netip.Prefix{} + ) + + for _, a := range step.Actions { + if a.Kind != "api" || a.Method != http.MethodGet { + continue + } + + switch { + case a.Path == "/tailnet/-/devices": + var out struct { + Devices []sequenceDevice `json:"devices"` + } + require.NoError(t, json.Unmarshal(a.Response, &out), "%s: device list", step.Name) + + devices, listed = out.Devices, true + + case strings.HasPrefix(a.Path, "/device/{device:") && strings.HasSuffix(a.Path, "}/routes"): + alias := strings.TrimSuffix(strings.TrimPrefix(a.Path, "/device/{device:"), "}/routes") + + var out struct { + Advertised []netip.Prefix `json:"advertisedRoutes"` + Enabled []netip.Prefix `json:"enabledRoutes"` + } + require.NoError(t, json.Unmarshal(a.Response, &out), "%s: routes of %s", step.Name, alias) + + advertised[alias], approved[alias] = out.Advertised, out.Enabled + } + } + + require.True(t, listed, "%s: no device list", step.Name) + + nodes := make(types.Nodes, 0, len(devices)) + + for _, d := range devices { + alias := strings.TrimSuffix(strings.TrimPrefix(d.ID, "{device:"), "}") + + id, ok := ids[alias] + require.True(t, ok, "%s: %s never joined", step.Name, alias) + + _, read := approved[alias] + require.True(t, read, "%s: no route read for %s", step.Name, alias) + + node := &types.Node{ + ID: id, + Hostname: alias, + GivenName: alias, + Tags: d.Tags, + Hostinfo: &tailcfg.Hostinfo{RoutableIPs: advertised[alias]}, + ApprovedRoutes: approved[alias], + } + + for _, s := range d.Addresses { + addr := netip.MustParseAddr(s) + if addr.Is4() { + node.IPv4 = &addr + } else { + node.IPv6 = &addr + } + } + + if len(d.Tags) == 0 { + i := slices.IndexFunc(users, func(u types.User) bool { return u.Email == d.User }) + require.GreaterOrEqual(t, i, 0, "%s: %s owned by unknown %q", step.Name, alias, d.User) + + node.User = &users[i] + node.UserID = &users[i].ID + } + + nodes = append(nodes, node) + } + + return nodes, approved +} + +// stepPolicy returns the policy the step pushed, or nil. +func stepPolicy(t *testing.T, step testcapture.Step) []byte { + t.Helper() + + var out []byte + + for _, a := range step.Actions { + if a.Kind != "policy" { + continue + } + + require.Equal(t, http.StatusOK, a.Status, "%s: refused policy", step.Name) + + // HuJSON bodies are stored as a JSON string. + out = a.Body + if strings.HasPrefix(string(a.Body), `"`) { + var s string + require.NoError(t, json.Unmarshal(a.Body, &s), "%s: policy body", step.Name) + + out = []byte(s) + } + } + + return out +} + +// joinRoutes returns the routes alias advertised when it joined in step. +func joinRoutes(step testcapture.Step, alias string) []netip.Prefix { + var out []netip.Prefix + + for _, a := range step.Actions { + if a.Kind == "join" && a.Node == alias { + for _, r := range a.Routes { + out = append(out, netip.MustParsePrefix(r)) + } + } + } + + return out +} diff --git a/hscontrol/servertest/mapstream_compat_test.go b/hscontrol/servertest/mapstream_compat_test.go index 35328ba12..ef067210f 100644 --- a/hscontrol/servertest/mapstream_compat_test.go +++ b/hscontrol/servertest/mapstream_compat_test.go @@ -2,12 +2,15 @@ // is sent when a device is retagged, when a running peer changes its DERP // home, disco key, hostname or port, when a node goes down and up around // policy pushes, and which Hostinfo fields peers and the node itself get; -// what a node hears of nodes it cannot see; and what a router's peers hear -// of routes it announces but has no approval for. +// what a node hears of nodes it cannot see; what a router's peers hear of +// routes it announces but has no approval for; and what every node is sent +// as one policy is compiled again for node changes and a group edit. // -// Test data source: testdata/steps/{map-delivery,hidden-peers,route-announce}.hujson, -// loaded by name. The disco rotation of map-delivery also pins a row of -// TestBuildMapRequestChangeResponse in ../state. +// Test data source: testdata/steps/{map-delivery,hidden-peers,route-announce, +// policy-generation}.hujson, loaded by name. The disco rotation of +// map-delivery also pins a row of TestBuildMapRequestChangeResponse in +// ../state; policy-generation is also read by TestPolicySequenceCompat in +// ../policy/v2. // Source format: github.com/juanfont/headscale/hscontrol/types/testcapture package servertest_test @@ -17,6 +20,7 @@ import ( "encoding/json" "fmt" "maps" + "net/http" "net/netip" "slices" "strconv" @@ -123,6 +127,33 @@ var mapStreamSkipReasons = map[string]string{ "route-announce/RA9/rtr/self-routes": selfRoutesReduced, "route-announce/RA10/rtr/self-routes": selfRoutesReduced, "route-announce/RA11/rtr/self-routes": selfRoutesReduced, + + "policy-generation/G2/thor-1/peers": sameUserPeers, + "policy-generation/G2/thor-2/peers": sameUserPeers, + "policy-generation/G3/thor-1/peers": sameUserPeers, + "policy-generation/G3/thor-2/peers": sameUserPeers, + "policy-generation/G4/thor-1/peers": sameUserPeers, + "policy-generation/G4/thor-2/peers": sameUserPeers, + "policy-generation/G2/thor-1/peer-owners": sameUserPeers, + "policy-generation/G2/thor-2/peer-owners": sameUserPeers, + "policy-generation/G3/thor-1/peer-owners": sameUserPeers, + "policy-generation/G3/thor-2/peer-owners": sameUserPeers, + "policy-generation/G4/thor-1/peer-owners": sameUserPeers, + "policy-generation/G4/thor-2/peer-owners": sameUserPeers, + + "policy-generation/G2/freya-1/filter": filterDstMerged, + "policy-generation/G2/thor-2/filter": filterDstMerged, + "policy-generation/G3/freya-1/filter": filterDstMerged, + "policy-generation/G3/thor-2/filter": filterDstMerged, + "policy-generation/G4/freya-1/filter": filterDstMerged, + "policy-generation/G4/thor-2/filter": filterDstMerged, + "policy-generation/G5/freya-1/filter": filterDstMerged, + "policy-generation/G5/thor-2/filter": filterDstMerged, + + "policy-generation/G4/rt/enabled": withdrawnRouteEnabled, + "policy-generation/G5/rt/enabled": withdrawnRouteEnabled, + "policy-generation/G7/rt/enabled": withdrawnRouteEnabled, + "policy-generation/G8/rt/enabled": withdrawnRouteEnabled, } const ( @@ -136,6 +167,7 @@ const ( peerServicesWhole = "PEER_SERVICES_WHOLE: headscale sends peers every service a node reports; SaaS leaves out peerapi-dns-proxy" removalSentToAll = "REMOVAL_SENT_TO_ALL: headscale tells every connected node that a deleted node is gone; SaaS tells only the nodes that had it as a peer" announcePolicyResend = "ANNOUNCE_POLICY_RESEND: under an autogroup:self or via policy, headscale sends every connected node a policy response when a router changes only routes nobody approved; SaaS sends nothing to nodes that cannot see the router" + withdrawnRouteEnabled = "WITHDRAWN_ROUTE_ENABLED: headscale's routes API keeps a route the device stopped advertising in enabledRoutes; SaaS lists only advertised routes as enabled" ) // mapStreamNotCompared lists, by key prefix, checks left out: SaaS's answer @@ -159,6 +191,11 @@ var mapStreamNotCompared = []string{ "route-announce/RA11/observer/presence", "route-announce/RA11/srv/presence", "route-announce/RA11/witness/presence", + + "policy-generation/G7/rt-b/filter", + "policy-generation/G7/rt-plain/filter", + "policy-generation/G7/srv/filter", + "policy-generation/G7/srv/ssh", } // compared drops the checks mapStreamNotCompared leaves out. @@ -502,16 +539,7 @@ type deliveryStep struct { // on; and, per node, whether it was sent anything. func deliveryChecks(d *deliveryStep) []stepCheck { r := d.r - saasNames := map[netip.Addr]string{} - - for alias, n := range r.c.Topology.Nodes { - for _, s := range []string{n.IPv4, n.IPv6} { - addr, err := netip.ParseAddr(s) - if err == nil { - saasNames[addr] = alias - } - } - } + saasNames := topologyAddrNames(r.c) var checks []stepCheck @@ -618,6 +646,23 @@ func (d *deliveryStep) subjectChecks(x, v string) []stepCheck { } } +// topologyAddrNames names each SaaS address in c's topology by alias, so a +// rule naming a device that has since left still reads by name. +func topologyAddrNames(c *testcapture.Capture) map[netip.Addr]string { + out := map[netip.Addr]string{} + + for alias, n := range c.Topology.Nodes { + for _, s := range []string{n.IPv4, n.IPv6} { + addr, err := netip.ParseAddr(s) + if err == nil { + out[addr] = alias + } + } + } + + return out +} + // stepSubjects names the nodes the step acted on, by action or device path. func stepSubjects(step testcapture.Step) []string { set := map[string]bool{} @@ -910,7 +955,7 @@ func TestRouteAnnouncementCompat(t *testing.T) { func TestMapStreamSkipEntriesNameCaptures(t *testing.T) { t.Parallel() - requireSkipCaptures(t, mapStreamSkipReasons, "map-delivery", "hidden-peers", "route-announce") + requireSkipCaptures(t, mapStreamSkipReasons, "map-delivery", "hidden-peers", "route-announce", "policy-generation") } // visibilityMark is what a client had been sent when a step began. @@ -1143,3 +1188,158 @@ func (r *stepReplay) hsRemovedPeers(cl *servertest.TestClient, mark visibilityMa return sortedStrings(slices.Collect(maps.Keys(set))) } + +// TestPolicySequenceMapCompat replays one policy while members join, a +// second via router joins and the first withdraws its routes, the admin tags +// one member's device and deletes another, then the group the policy names +// in ACLs, a via grant, SSH and autoApprovers is edited. After each step it +// compares, per captured node, its peers, whom it sees each owned by, which +// peers serve each route, and its filter and SSH rules by device; and per +// device, its owner and routes. TestPolicySequenceCompat in ../policy/v2 +// compares the same steps at the policy layer. +func TestPolicySequenceMapCompat(t *testing.T) { + t.Parallel() + + t.Run("policy-generation", func(t *testing.T) { + t.Parallel() + + replayPolicySequence(t, "policy-generation") + }) +} + +func replayPolicySequence(t *testing.T, id string) { + t.Helper() + + c := readStepCapture(t, id) + r := newStepReplay(t, c) + saasNames := topologyAddrNames(c) + evaluated := map[string]bool{} + + // Kept past a deletion, as saasNames are, so a deleted device's + // addresses still read as that device in rules that keep them. + hsNames := map[netip.Addr]string{} + names := func() map[netip.Addr]string { + maps.Copy(hsNames, r.addrNames()) + + return hsNames + } + + for _, step := range c.Steps { + require.Equal(t, "observed", step.Result, "%s: the replay follows every step", step.Name) + + // The probe let each action land before the next, and which router + // serves a route depends on join order. + for _, a := range step.Actions { + one := step + one.Actions = []testcapture.Action{a} + require.Empty(t, r.apply(t, one), "%s: every login succeeds", step.Name) + r.waitSession(t, step.Name, a) + } + + t.Run(step.Name, func(t *testing.T) { + prefix := id + "/" + step.Name + "/" + holdChecks(t, mapStreamSkipReasons, prefix, compared(prefix, sequenceChecks(t, r, step, saasNames, names)), evaluated) + }) + } + + for k := range mapStreamSkipReasons { + if strings.HasPrefix(k, id+"/") && !evaluated[k] { + t.Errorf("skip entry %q names no check", k) + } + } +} + +// sequenceChecks compares, per node SaaS captured in the step, its peers, +// their owners and routes, and its filter and SSH rules with devices named +// by saasNames and hsNames; per device in the step's device list, its owner; +// and per device whose routes the step read, the routes API. +func sequenceChecks( + t *testing.T, + r *stepReplay, + step testcapture.Step, + saasNames map[netip.Addr]string, + hsNames func() map[netip.Addr]string, +) []stepCheck { + t.Helper() + + var checks []stepCheck + + for _, x := range slices.Sorted(maps.Keys(step.Captures)) { + saas, cl := step.Captures[x].Netmap, r.clients[x] + require.NotNil(t, saas, "%s: no netmap of %s", step.Name, x) + require.NotNil(t, cl, "%s: %s never joined", step.Name, x) + + checks = append(checks, + stepCheck{x + "/peers", peerAliases(saas, r.saasAlias), func() string { return peerAliases(cl.Netmap(), r.hsAlias) }}, + stepCheck{x + "/peer-owners", peerOwners(saas, r.saasAlias), func() string { return peerOwners(cl.Netmap(), r.hsAlias) }}, + stepCheck{x + "/route-owner", routeOwners(saas, r.saasAlias), func() string { return routeOwners(cl.Netmap(), r.hsAlias) }}, + stepCheck{x + "/filter", renderMatches(saas, saasNames), func() string { return renderMatches(cl.Netmap(), hsNames()) }}, + stepCheck{x + "/ssh", renderSSHRules(saas, saasNames), func() string { return renderSSHRules(cl.Netmap(), hsNames()) }}, + ) + } + + for _, d := range stepDevices(t, step) { + x := deviceLabelAlias(d.ID) + checks = append(checks, stepCheck{x + "/owner", saasOwner(d), func() string { return renderOwners(r.hsViews(x)) }}) + } + + for _, a := range step.Actions { + if a.Kind != "api" || a.Method != http.MethodGet || !strings.HasSuffix(a.Path, "/routes") { + continue + } + + x := deviceAlias(t, a.Path) + + var want deviceRoutes + require.NoError(t, json.Unmarshal(a.Response, &want), "%s: %s", step.Name, a.Path) + + hs := func(pick func(deviceRoutes) []string) func() string { + return func() string { + got, ok := r.hsDeviceRoutes(t, x) + if !ok { + return "no single device" + } + + return sortedStrings(pick(got)) + } + } + + checks = append(checks, + stepCheck{x + "/advertised", sortedStrings(want.Advertised), hs(func(d deviceRoutes) []string { return d.Advertised })}, + stepCheck{x + "/enabled", sortedStrings(want.Enabled), hs(func(d deviceRoutes) []string { return d.Enabled })}, + ) + } + + return checks +} + +// peerOwners gives, per peer in nm that alias names, its tags and the login +// of the user it is shown under, SaaS emails mapped to user names. +func peerOwners(nm *netmap.NetworkMap, alias func(tailcfg.NodeID) (string, bool)) string { + if nm == nil { + return "no netmap" + } + + var out []string + + for _, p := range nm.Peers { + name, ok := alias(p.ID()) + if !ok { + continue + } + + login := "no profile" + if prof, ok := nm.UserProfiles[p.User()]; ok { + login = prof.LoginName() + if user, ok := captureUserNames[login]; ok { + login = user + } + } + + out = append(out, fmt.Sprintf("%s %s as %s", name, sortedStrings(p.Tags().AsSlice()), login)) + } + + slices.Sort(out) + + return strings.Join(out, "; ") +} diff --git a/hscontrol/servertest/testdata/steps/policy-generation.hujson b/hscontrol/servertest/testdata/steps/policy-generation.hujson new file mode 100644 index 000000000..cfa5fa0fd --- /dev/null +++ b/hscontrol/servertest/testdata/steps/policy-generation.hujson @@ -0,0 +1,18896 @@ +// policy-generation +// +// One policy while members join, a second via router joins and the first withdraws, the admin tags a member's device and deletes another, then an edit of the group the policy names in ACLs, a via grant, SSH and autoApprovers. Every live node per step. +// +// Nodes with filter rules: 5 of 5 +// Steps: 8 +// Captured at: 2026-10-20T13:08:16Z +// tool version: saasprobe 5be7eb00a64bd9602b0693f2616a7faa5ff83cea +// schema version: 1 +{ + "schema_version": 1, + "test_id": "policy-generation", + "description": "One policy while members join, a second via router joins and the first withdraws, the admin tags a member's device and deletes another, then an edit of the group the policy names in ACLs, a via grant, SSH and autoApprovers. Every live node per step.", + "captured_at": "2026-10-20T13:08:16.138996095Z", + "tool_version": "saasprobe 5be7eb00a64bd9602b0693f2616a7faa5ff83cea", + "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": { + "groups": {"group:eng": ["thor@example.org", "freya@example.com"]}, + "tagOwners": { + "tag:server": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:prod": ["odin@example.com"] + }, + "autoApprovers": {"routes": { + "10.44.0.0/16": ["tag:router", "tag:prod"], + "10.45.0.0/16": ["tag:router", "tag:prod"], + "10.55.0.0/16": ["group:eng", "group:eng"] + }}, + "acls": [ + { + "action": "accept", + "src": ["group:eng"], + "dst": ["tag:server:22", "tag:server:22", "10.45.0.0/16:*"] + }, + { + "action": "accept", + "src": ["thor@example.org"], + "dst": ["tag:server:80"] + }, + {"action": "accept", "src": ["odin@example.com"], "dst": ["*:*"]}, + {"action": "accept", "src": ["tag:server"], "dst": ["group:eng:9100"]} + ], + "grants": [{ + "src": ["group:eng"], + "dst": ["10.44.0.0/16", "10.44.0.0/16", "10.44.1.0/24", "10.45.0.0/16"], + "ip": ["*"], + "via": ["tag:router"] + }], + "ssh": [{ + "action": "accept", + "src": ["group:eng"], + "dst": ["tag:server"], + "users": ["root"] + }, { + "action": "accept", + "src": ["group:eng"], + "dst": ["tag:server"], + "users": ["root"] + }, { + "action": "accept", + "src": ["thor@example.org"], + "dst": ["tag:server"], + "users": ["ubuntu"] + }, { + "action": "accept", + "src": ["autogroup:member"], + "dst": ["autogroup:self"], + "users": ["autogroup:nonroot"] + }] + }}, + "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": {"freya-1": { + "hostname": "freya-1", + "tags": [], + "ipv4": "100.100.187.71", + "ipv6": "fd7a:115c:a1e0::8728:bb48", + "user": "freya", + "routable_ips": ["10.55.1.0/24"], + "approved_routes": ["10.55.1.0/24"] + }, "odin-1": { + "hostname": "odin-1", + "tags": [], + "ipv4": "100.122.74.40", + "ipv6": "fd7a:115c:a1e0::7d28:4a29", + "user": "odin", + "routable_ips": [], + "approved_routes": [] + }, "rt": { + "hostname": "rt", + "tags": ["tag:router"], + "ipv4": "100.94.159.72", + "ipv6": "fd7a:115c:a1e0::ad28:9f49", + "routable_ips": ["10.44.0.0/16", "10.45.0.0/16"], + "approved_routes": ["10.44.0.0/16", "10.45.0.0/16"] + }, "rt-b": { + "hostname": "rt-b", + "tags": ["tag:router"], + "ipv4": "100.122.54.90", + "ipv6": "fd7a:115c:a1e0::fc28:365b", + "routable_ips": ["10.44.0.0/16", "10.45.0.0/16"], + "approved_routes": ["10.44.0.0/16", "10.45.0.0/16"] + }, "rt-plain": { + "hostname": "rt-plain", + "tags": ["tag:prod"], + "ipv4": "100.91.34.117", + "ipv6": "fd7a:115c:a1e0::3d28:2276", + "routable_ips": ["10.44.0.0/16", "10.45.0.0/16"], + "approved_routes": ["10.44.0.0/16", "10.45.0.0/16"] + }, "srv": { + "hostname": "srv", + "tags": ["tag:server"], + "ipv4": "100.98.133.80", + "ipv6": "fd7a:115c:a1e0::d428:8551", + "routable_ips": [], + "approved_routes": [] + }, "thor-1": { + "hostname": "thor-1", + "tags": [], + "ipv4": "100.89.52.31", + "ipv6": "fd7a:115c:a1e0::28:3420", + "user": "thor", + "routable_ips": [], + "approved_routes": [] + }, "thor-2": { + "hostname": "thor-2", + "tags": [], + "ipv4": "100.98.185.9", + "ipv6": "fd7a:115c:a1e0::2728:b90a", + "user": "thor", + "routable_ips": [], + "approved_routes": [] + }}}, + "captures": {"odin-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "Hostinfo": {"Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "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": "odin-1", + "ComputedNameWithHost": "odin-1" + }, + "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:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "MachineKey": "mkey:d4aad92e11b56bf46c865cb54c99273a3f07bb4fea3e7d5109ee329df7c1a67b", + "Peers": [{ + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "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" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "rt": { + "packet_filter_rules": [{"SrcIPs": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1760694666591341, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": [ + "100.94.159.72/32", + "fd7a:115c:a1e0::ad28:9f49/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "Hostinfo": { + "Hostname": "rt", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:router"], + "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:08:26.465714652Z", + "Tags": ["tag:router"], + "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": "rt", + "ComputedNameWithHost": "rt" + }, + "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:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "MachineKey": "mkey:aa000d00f3fa1b2efb6d0b135fef18aa40e458ae7f742e8473fca2c587ae5628", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.89.52.31", "fd7a:115c:a1e0::28:3420"], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1760694666591341": { + "ID": 1760694666591341, + "LoginName": "rt.tail78f774.ts.net", + "DisplayName": "rt" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, + "backend_state": "Running" + }, "rt-plain": {"packet_filter_rules": [{ + "SrcIPs": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 4044323459478186, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "Hostinfo": { + "Hostname": "rt-plain", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:prod"], + "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:08:24.46815472Z", + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "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": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, + "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:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "MachineKey": "mkey:a90b7e809297543eeee90dec3ddc268d8353130b3c27a1984b5d5c336eb4eb56", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.89.52.31", "fd7a:115c:a1e0::28:3420"], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4044323459478186": { + "ID": 4044323459478186, + "LoginName": "rt-plain.tail78f774.ts.net", + "DisplayName": "rt-plain" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "srv": { + "packet_filter_rules": [{"SrcIPs": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}}, + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}}, + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 17847873460602, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "Hostinfo": {"Hostname": "srv", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "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": "srv", + "ComputedNameWithHost": "srv" + }, + "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:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "MachineKey": "mkey:09821ae2a092955011cac786562b0659d1f7723cc7689ecdeceadd255e311032", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}}, + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.89.52.31", "fd7a:115c:a1e0::28:3420"], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}}, + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, { + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, { + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"17847873460602": { + "ID": 17847873460602, + "LoginName": "srv.tail78f774.ts.net", + "DisplayName": "srv" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, + "ssh_rules": [{ + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, { + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, { + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], + "backend_state": "Running" + }, "thor-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.89.52.31", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::28:3420", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.89.52.31/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::28:3420/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Hostinfo": { + "Hostname": "thor-1", + "Services": [{"Proto": "peerapi-dns-proxy", "Port": 1}] + }, + "Created": "2026-10-20T13:08:30.546729218Z", + "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/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": "thor-1", + "ComputedNameWithHost": "thor-1" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "MachineKey": "mkey:3732617da8302b06ec17218fce16ee9afb08ebdd607e8f0c5a9349638035a72a", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.89.52.31/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::28:3420/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.89.52.31", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::28:3420", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "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" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}}, + "node_ids": { + "freya-1": 6889946307107430, + "odin-1": 8596560588312866, + "rt": 1760694666591341, + "rt-b": 3000953077253870, + "rt-plain": 4044323459478186, + "srv": 17847873460602, + "thor-1": 7845596747036187, + "thor-2": 4275230665643566 + }, + "steps": [{ + "name": "G0", + "at": "2026-10-20T13:08:16.139013662Z", + "note": "last change 2s into the settle", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl/validate", + "header": {"Content-Type": "application/hujson"}, + "body": { + "acls": [ + { + "action": "accept", + "dst": ["tag:server:22", "tag:server:22", "10.45.0.0/16:*"], + "src": ["group:eng"] + }, + { + "action": "accept", + "dst": ["tag:server:80"], + "src": ["thor@example.org"] + }, + {"action": "accept", "dst": ["*:*"], "src": ["odin@example.com"]}, + {"action": "accept", "dst": ["group:eng:9100"], "src": ["tag:server"]} + ], + "autoApprovers": {"routes": { + "10.44.0.0/16": ["tag:router", "tag:prod"], + "10.45.0.0/16": ["tag:router", "tag:prod"], + "10.55.0.0/16": ["group:eng", "group:eng"] + }}, + "grants": [{ + "dst": ["10.44.0.0/16", "10.44.0.0/16", "10.44.1.0/24", "10.45.0.0/16"], + "ip": ["*"], + "src": ["group:eng"], + "via": ["tag:router"] + }], + "groups": {"group:eng": ["thor@example.org", "freya@example.com"]}, + "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["group:eng"], + "users": ["root"] + }, { + "action": "accept", + "dst": ["tag:server"], + "src": ["group:eng"], + "users": ["root"] + }, { + "action": "accept", + "dst": ["tag:server"], + "src": ["thor@example.org"], + "users": ["ubuntu"] + }, { + "action": "accept", + "dst": ["autogroup:self"], + "src": ["autogroup:member"], + "users": ["autogroup:nonroot"] + }], + "tagOwners": { + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + } + }, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {} + }, { + "kind": "policy", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": { + "acls": [ + { + "action": "accept", + "dst": ["tag:server:22", "tag:server:22", "10.45.0.0/16:*"], + "src": ["group:eng"] + }, + { + "action": "accept", + "dst": ["tag:server:80"], + "src": ["thor@example.org"] + }, + {"action": "accept", "dst": ["*:*"], "src": ["odin@example.com"]}, + {"action": "accept", "dst": ["group:eng:9100"], "src": ["tag:server"]} + ], + "autoApprovers": {"routes": { + "10.44.0.0/16": ["tag:router", "tag:prod"], + "10.45.0.0/16": ["tag:router", "tag:prod"], + "10.55.0.0/16": ["group:eng", "group:eng"] + }}, + "grants": [{ + "dst": ["10.44.0.0/16", "10.44.0.0/16", "10.44.1.0/24", "10.45.0.0/16"], + "ip": ["*"], + "src": ["group:eng"], + "via": ["tag:router"] + }], + "groups": {"group:eng": ["thor@example.org", "freya@example.com"]}, + "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["group:eng"], + "users": ["root"] + }, { + "action": "accept", + "dst": ["tag:server"], + "src": ["group:eng"], + "users": ["root"] + }, { + "action": "accept", + "dst": ["tag:server"], + "src": ["thor@example.org"], + "users": ["ubuntu"] + }, { + "action": "accept", + "dst": ["autogroup:self"], + "src": ["autogroup:member"], + "users": ["autogroup:nonroot"] + }], + "tagOwners": { + "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": ["tag:server:22", "tag:server:22", "10.45.0.0/16:*"], + "src": ["group:eng"] + }, + { + "action": "accept", + "dst": ["tag:server:80"], + "src": ["thor@example.org"] + }, + {"action": "accept", "dst": ["*:*"], "src": ["odin@example.com"]}, + {"action": "accept", "dst": ["group:eng:9100"], "src": ["tag:server"]} + ], + "autoApprovers": {"routes": { + "10.44.0.0/16": ["tag:router", "tag:prod"], + "10.45.0.0/16": ["tag:router", "tag:prod"], + "10.55.0.0/16": ["group:eng", "group:eng"] + }}, + "grants": [{ + "dst": ["10.44.0.0/16", "10.44.0.0/16", "10.44.1.0/24", "10.45.0.0/16"], + "ip": ["*"], + "src": ["group:eng"], + "via": ["tag:router"] + }], + "groups": {"group:eng": ["thor@example.org", "freya@example.com"]}, + "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["group:eng"], + "users": ["root"] + }, { + "action": "accept", + "dst": ["tag:server"], + "src": ["group:eng"], + "users": ["root"] + }, { + "action": "accept", + "dst": ["tag:server"], + "src": ["thor@example.org"], + "users": ["ubuntu"] + }, { + "action": "accept", + "dst": ["autogroup:self"], + "src": ["autogroup:member"], + "users": ["autogroup:nonroot"] + }], + "tagOwners": { + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + } + }, + "offset_ms": 2007 + }, { + "kind": "api", + "key": "K-srv", + "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 K-srv", "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-20T13:08:22Z", + "description": "tscap-saasprobe K-srv", + "expires": "2026-10-20T14:08:22Z", + "expirySeconds": 3600, + "id": "{key:K-srv}", + "keyType": "auth", + "userId": "{user:odin}" + }, + "offset_ms": 4048 + }, { + "kind": "join", + "node": "srv", + "key": "K-srv", + "request_tags": ["tag:server"], + "hostname": "srv", + "offset_ms": 6174 + }, { + "kind": "api", + "key": "K-rt-plain", + "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 K-rt-plain", "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-20T13:08:24Z", + "description": "tscap-saasprobe K-rt-plain", + "expires": "2026-10-20T14:08:24Z", + "expirySeconds": 3600, + "id": "{key:K-rt-plain}", + "keyType": "auth", + "userId": "{user:odin}" + }, + "offset_ms": 6738 + }, { + "kind": "join", + "node": "rt-plain", + "key": "K-rt-plain", + "request_tags": ["tag:prod"], + "routes": ["10.44.0.0/16", "10.45.0.0/16"], + "hostname": "rt-plain", + "offset_ms": 8186 + }, { + "kind": "api", + "key": "K-rt", + "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 K-rt", "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-20T13:08:26Z", + "description": "tscap-saasprobe K-rt", + "expires": "2026-10-20T14:08:26Z", + "expirySeconds": 3600, + "id": "{key:K-rt}", + "keyType": "auth", + "userId": "{user:odin}" + }, + "offset_ms": 8767 + }, { + "kind": "join", + "node": "rt", + "key": "K-rt", + "request_tags": ["tag:router"], + "routes": ["10.44.0.0/16", "10.45.0.0/16"], + "hostname": "rt", + "offset_ms": 10198 + }, { + "kind": "api", + "key": "K-odin-1", + "principal": "user:odin", + "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 K-odin-1", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": { + "devices": {"create": {"ephemeral": false, "preauthorized": true, "reusable": false}} + }, + "created": "2026-10-20T13:08:28Z", + "description": "tscap-saasprobe K-odin-1", + "expires": "2026-10-20T14:08:28Z", + "expirySeconds": 3600, + "id": "{key:K-odin-1}", + "keyType": "auth", + "userId": "{user:odin}" + }, + "offset_ms": 10780 + }, { + "kind": "join", + "node": "odin-1", + "key": "K-odin-1", + "hostname": "odin-1", + "offset_ms": 12222 + }, { + "kind": "api", + "key": "K-thor-1", + "principal": "user:thor", + "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 K-thor-1", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": { + "devices": {"create": {"ephemeral": false, "preauthorized": true, "reusable": false}} + }, + "created": "2026-10-20T13:08:30Z", + "description": "tscap-saasprobe K-thor-1", + "expires": "2026-10-20T14:08:30Z", + "expirySeconds": 3600, + "id": "{key:K-thor-1}", + "keyType": "auth", + "userId": "{user:thor}" + }, + "offset_ms": 13143 + }, { + "kind": "join", + "node": "thor-1", + "key": "K-thor-1", + "hostname": "thor-1", + "offset_ms": 14248 + }, {"kind": "wait", "args": ["quiet", "15s"], "offset_ms": 15095}, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/devices", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"devices": [{ + "addresses": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:29Z", + "expires": "2027-04-18T13:08:29Z", + "hostname": "odin-1", + "id": "{device:odin-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:08:59Z", + "machineKey": "{machine:odin-1}", + "name": "odin-1.tail78f774.ts.net", + "nodeId": "{device:odin-1}", + "nodeKey": "{nodekey:4}", + "oauthClientId": "{key:K-odin-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:119e0a4a6425620cbe4c5ce2de44948286861be186adb1fd6dc81801c0340644", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.91.34.117", "fd7a:115c:a1e0::3d28:2276"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:24Z", + "expires": "2027-04-18T13:08:24Z", + "hostname": "rt-plain", + "id": "{device:rt-plain}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:08:59Z", + "machineKey": "{machine:rt-plain}", + "name": "rt-plain.tail78f774.ts.net", + "nodeId": "{device:rt-plain}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:K-rt-plain}", + "os": "linux", + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:51d1e76a697361ad7854d71460b469f280f58656c3736c6f0ca75de8a018100c", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.94.159.72", "fd7a:115c:a1e0::ad28:9f49"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:26Z", + "expires": "2027-04-18T13:08:26Z", + "hostname": "rt", + "id": "{device:rt}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:08:59Z", + "machineKey": "{machine:rt}", + "name": "rt.tail78f774.ts.net", + "nodeId": "{device:rt}", + "nodeKey": "{nodekey:3}", + "oauthClientId": "{key:K-rt}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:a27dc0ed32d47d53efa6d8b86337d240e55810276e980e861ab3d0405a5c8dbf", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:22Z", + "expires": "2027-04-18T13:08:22Z", + "hostname": "srv", + "id": "{device:srv}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:08:59Z", + "machineKey": "{machine:srv}", + "name": "srv.tail78f774.ts.net", + "nodeId": "{device:srv}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:K-srv}", + "os": "linux", + "tags": ["tag:server"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:1d5ea3ea2f761a531a50c7ede90ceaf7fc2d0cdbdc1bf916ba391807dcabf5cb", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:31Z", + "expires": "2027-04-18T13:08:31Z", + "hostname": "thor-1", + "id": "{device:thor-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:08:59Z", + "machineKey": "{machine:thor-1}", + "name": "thor-1.tail78f774.ts.net", + "nodeId": "{device:thor-1}", + "nodeKey": "{nodekey:5}", + "oauthClientId": "{key:K-thor-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:550d77d64a67a3d8d847e26682ace8d4418f200bef86997a642e2daa52e3cd54", + "updateAvailable": true, + "user": "thor@example.org" + }]}, + "offset_ms": 43140 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:srv}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 43162 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt-plain}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 43180 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 43199 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:odin-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 43218 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:thor-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 43236 + }], + "captures": {"odin-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "Hostinfo": {"Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "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": "odin-1", + "ComputedNameWithHost": "odin-1" + }, + "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:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "MachineKey": "mkey:d4aad92e11b56bf46c865cb54c99273a3f07bb4fea3e7d5109ee329df7c1a67b", + "Peers": [{ + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "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" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "rt": { + "packet_filter_rules": [{"SrcIPs": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1760694666591341, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": [ + "100.94.159.72/32", + "fd7a:115c:a1e0::ad28:9f49/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "Hostinfo": { + "Hostname": "rt", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:router"], + "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:08:26.465714652Z", + "Tags": ["tag:router"], + "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": "rt", + "ComputedNameWithHost": "rt" + }, + "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:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "MachineKey": "mkey:aa000d00f3fa1b2efb6d0b135fef18aa40e458ae7f742e8473fca2c587ae5628", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.89.52.31", "fd7a:115c:a1e0::28:3420"], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1760694666591341": { + "ID": 1760694666591341, + "LoginName": "rt.tail78f774.ts.net", + "DisplayName": "rt" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, + "backend_state": "Running" + }, "rt-plain": {"packet_filter_rules": [{ + "SrcIPs": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 4044323459478186, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "Hostinfo": { + "Hostname": "rt-plain", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:prod"], + "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:08:24.46815472Z", + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "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": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, + "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:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "MachineKey": "mkey:a90b7e809297543eeee90dec3ddc268d8353130b3c27a1984b5d5c336eb4eb56", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.89.52.31", "fd7a:115c:a1e0::28:3420"], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4044323459478186": { + "ID": 4044323459478186, + "LoginName": "rt-plain.tail78f774.ts.net", + "DisplayName": "rt-plain" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "srv": { + "packet_filter_rules": [{"SrcIPs": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}}, + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}}, + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 17847873460602, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "Hostinfo": {"Hostname": "srv", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "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": "srv", + "ComputedNameWithHost": "srv" + }, + "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:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "MachineKey": "mkey:09821ae2a092955011cac786562b0659d1f7723cc7689ecdeceadd255e311032", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}}, + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.89.52.31", "fd7a:115c:a1e0::28:3420"], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}}, + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, { + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, { + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"17847873460602": { + "ID": 17847873460602, + "LoginName": "srv.tail78f774.ts.net", + "DisplayName": "srv" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, + "ssh_rules": [{ + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, { + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }, { + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], + "backend_state": "Running" + }, "thor-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.89.52.31", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::28:3420", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.89.52.31/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::28:3420/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Hostinfo": { + "Hostname": "thor-1", + "Services": [{"Proto": "peerapi-dns-proxy", "Port": 1}] + }, + "Created": "2026-10-20T13:08:30.546729218Z", + "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/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": "thor-1", + "ComputedNameWithHost": "thor-1" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "MachineKey": "mkey:3732617da8302b06ec17218fce16ee9afb08ebdd607e8f0c5a9349638035a72a", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.89.52.31/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::28:3420/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.89.52.31", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::28:3420", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "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" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}}, + "register": {"odin-1": [{ + "node_key": "{nodekey:4}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 11860 + }], "rt": [{ + "node_key": "{nodekey:3}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 9860 + }], "rt-plain": [{ + "node_key": "{nodekey:2}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 7860 + }], "srv": [{ + "node_key": "{nodekey:1}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 5860 + }], "thor-1": [{ + "node_key": "{nodekey:5}", + "node_key_expired": false, + "machine_authorized": true, + "offset_ms": 13860 + }]} + }, { + "name": "G1", + "at": "2026-10-20T13:09:01.424055589Z", + "note": "last change 2s into the settle", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "K-freya-1", + "principal": "user:freya", + "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 K-freya-1", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": { + "devices": {"create": {"ephemeral": false, "preauthorized": true, "reusable": false}} + }, + "created": "2026-10-20T13:09:01Z", + "description": "tscap-saasprobe K-freya-1", + "expires": "2026-10-20T14:09:01Z", + "expirySeconds": 3600, + "id": "{key:K-freya-1}", + "keyType": "auth", + "userId": "{user:freya}" + }, + "offset_ms": 18 + }, { + "kind": "join", + "node": "freya-1", + "key": "K-freya-1", + "routes": ["10.55.1.0/24"], + "hostname": "freya-1", + "offset_ms": 163 + }, {"kind": "wait", "args": ["quiet", "15s"], "offset_ms": 749}, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/devices", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"devices": [{ + "addresses": ["100.100.187.71", "fd7a:115c:a1e0::8728:bb48"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:09:02Z", + "expires": "2027-04-18T13:09:02Z", + "hostname": "freya-1", + "id": "{device:freya-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:09:32Z", + "machineKey": "{machine:freya-1}", + "name": "freya-1.tail78f774.ts.net", + "nodeId": "{device:freya-1}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:K-freya-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:c3fea318f84408b5b0f03fca6575efb99db569c8d980842c3203104a1c594cbc", + "updateAvailable": true, + "user": "freya@example.com" + }, { + "addresses": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:29Z", + "expires": "2027-04-18T13:08:29Z", + "hostname": "odin-1", + "id": "{device:odin-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:09:32Z", + "machineKey": "{machine:odin-1}", + "name": "odin-1.tail78f774.ts.net", + "nodeId": "{device:odin-1}", + "nodeKey": "{nodekey:4}", + "oauthClientId": "{key:K-odin-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:119e0a4a6425620cbe4c5ce2de44948286861be186adb1fd6dc81801c0340644", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.91.34.117", "fd7a:115c:a1e0::3d28:2276"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:24Z", + "expires": "2027-04-18T13:08:24Z", + "hostname": "rt-plain", + "id": "{device:rt-plain}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:09:32Z", + "machineKey": "{machine:rt-plain}", + "name": "rt-plain.tail78f774.ts.net", + "nodeId": "{device:rt-plain}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:K-rt-plain}", + "os": "linux", + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:51d1e76a697361ad7854d71460b469f280f58656c3736c6f0ca75de8a018100c", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.94.159.72", "fd7a:115c:a1e0::ad28:9f49"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:26Z", + "expires": "2027-04-18T13:08:26Z", + "hostname": "rt", + "id": "{device:rt}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:09:32Z", + "machineKey": "{machine:rt}", + "name": "rt.tail78f774.ts.net", + "nodeId": "{device:rt}", + "nodeKey": "{nodekey:3}", + "oauthClientId": "{key:K-rt}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:a27dc0ed32d47d53efa6d8b86337d240e55810276e980e861ab3d0405a5c8dbf", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:22Z", + "expires": "2027-04-18T13:08:22Z", + "hostname": "srv", + "id": "{device:srv}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:09:32Z", + "machineKey": "{machine:srv}", + "name": "srv.tail78f774.ts.net", + "nodeId": "{device:srv}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:K-srv}", + "os": "linux", + "tags": ["tag:server"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:1d5ea3ea2f761a531a50c7ede90ceaf7fc2d0cdbdc1bf916ba391807dcabf5cb", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:31Z", + "expires": "2027-04-18T13:08:31Z", + "hostname": "thor-1", + "id": "{device:thor-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:09:32Z", + "machineKey": "{machine:thor-1}", + "name": "thor-1.tail78f774.ts.net", + "nodeId": "{device:thor-1}", + "nodeKey": "{nodekey:5}", + "oauthClientId": "{key:K-thor-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:550d77d64a67a3d8d847e26682ace8d4418f200bef86997a642e2daa52e3cd54", + "updateAvailable": true, + "user": "thor@example.org" + }]}, + "offset_ms": 30792 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:srv}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 30811 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt-plain}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 30828 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 30846 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:odin-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 30863 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:thor-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 30880 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:freya-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": ["10.55.1.0/24"], "enabledRoutes": ["10.55.1.0/24"]}, + "offset_ms": 30897 + }], + "captures": {"freya-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.100.187.71", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::8728:bb48", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.100.187.71/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::8728:bb48/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128", "10.55.1.0/24"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "Hostinfo": {"Hostname": "freya-1", "RoutableIPs": ["10.55.1.0/24"], "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "PrimaryRoutes": ["10.55.1.0/24"], + "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/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": "freya-1", + "ComputedNameWithHost": "freya-1" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "MachineKey": "mkey:6b108c8cff07e52e3488ef526109513c47034303ec9ec990c47de7620360ec49", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.100.187.71/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::8728:bb48/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.100.187.71", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::8728:bb48", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.100.187.71"}, {"nodeIP": "fd7a:115c:a1e0::8728:bb48"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.100.187.71"}, {"nodeIP": "fd7a:115c:a1e0::8728:bb48"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "odin-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "Hostinfo": {"Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "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": "odin-1", + "ComputedNameWithHost": "odin-1" + }, + "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:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "MachineKey": "mkey:d4aad92e11b56bf46c865cb54c99273a3f07bb4fea3e7d5109ee329df7c1a67b", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128", "10.55.1.0/24"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "PrimaryRoutes": ["10.55.1.0/24"], + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "rt": {"packet_filter_rules": [{"SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1760694666591341, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": [ + "100.94.159.72/32", + "fd7a:115c:a1e0::ad28:9f49/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "Hostinfo": { + "Hostname": "rt", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:router"], + "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:08:26.465714652Z", + "Tags": ["tag:router"], + "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": "rt", + "ComputedNameWithHost": "rt" + }, + "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:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "MachineKey": "mkey:aa000d00f3fa1b2efb6d0b135fef18aa40e458ae7f742e8473fca2c587ae5628", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.89.52.31", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1760694666591341": { + "ID": 1760694666591341, + "LoginName": "rt.tail78f774.ts.net", + "DisplayName": "rt" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "rt-plain": {"packet_filter_rules": [{ + "SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 4044323459478186, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "Hostinfo": { + "Hostname": "rt-plain", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:prod"], + "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:08:24.46815472Z", + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "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": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, + "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:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "MachineKey": "mkey:a90b7e809297543eeee90dec3ddc268d8353130b3c27a1984b5d5c336eb4eb56", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.89.52.31", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4044323459478186": { + "ID": 4044323459478186, + "LoginName": "rt-plain.tail78f774.ts.net", + "DisplayName": "rt-plain" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "srv": {"packet_filter_rules": [{"SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}} + ]}, {"SrcIPs": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 17847873460602, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "Hostinfo": {"Hostname": "srv", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "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": "srv", + "ComputedNameWithHost": "srv" + }, + "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:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "MachineKey": "mkey:09821ae2a092955011cac786562b0659d1f7723cc7689ecdeceadd255e311032", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.89.52.31", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}} + ]}, {"SrcIPs": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, { + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"17847873460602": { + "ID": 17847873460602, + "LoginName": "srv.tail78f774.ts.net", + "DisplayName": "srv" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, { + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "thor-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.89.52.31", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::28:3420", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.89.52.31/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::28:3420/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "Hostinfo": {"Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "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/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": "thor-1", + "ComputedNameWithHost": "thor-1" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "MachineKey": "mkey:3732617da8302b06ec17218fce16ee9afb08ebdd607e8f0c5a9349638035a72a", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.89.52.31/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::28:3420/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.89.52.31", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::28:3420", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "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" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.89.52.31"}, {"nodeIP": "fd7a:115c:a1e0::28:3420"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}}, + "register": {"freya-1": [{ + "node_key": "{nodekey:6}", + "node_key_expired": false, + "machine_authorized": true + }]} + }, { + "name": "G2", + "at": "2026-10-20T13:09:34.346922831Z", + "note": "last change 2s into the settle", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "K-thor-2", + "principal": "user:thor", + "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 K-thor-2", "expirySeconds": 3600}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "capabilities": { + "devices": {"create": {"ephemeral": false, "preauthorized": true, "reusable": false}} + }, + "created": "2026-10-20T13:09:34Z", + "description": "tscap-saasprobe K-thor-2", + "expires": "2026-10-20T14:09:34Z", + "expirySeconds": 3600, + "id": "{key:K-thor-2}", + "keyType": "auth", + "userId": "{user:thor}" + }, + "offset_ms": 17 + }, { + "kind": "join", + "node": "thor-2", + "key": "K-thor-2", + "hostname": "thor-2", + "offset_ms": 155 + }, {"kind": "wait", "args": ["quiet", "15s"], "offset_ms": 714}, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/devices", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"devices": [{ + "addresses": ["100.100.187.71", "fd7a:115c:a1e0::8728:bb48"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:09:02Z", + "expires": "2027-04-18T13:09:02Z", + "hostname": "freya-1", + "id": "{device:freya-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:10:07Z", + "machineKey": "{machine:freya-1}", + "name": "freya-1.tail78f774.ts.net", + "nodeId": "{device:freya-1}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:K-freya-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:c3fea318f84408b5b0f03fca6575efb99db569c8d980842c3203104a1c594cbc", + "updateAvailable": true, + "user": "freya@example.com" + }, { + "addresses": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:29Z", + "expires": "2027-04-18T13:08:29Z", + "hostname": "odin-1", + "id": "{device:odin-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:10:07Z", + "machineKey": "{machine:odin-1}", + "name": "odin-1.tail78f774.ts.net", + "nodeId": "{device:odin-1}", + "nodeKey": "{nodekey:4}", + "oauthClientId": "{key:K-odin-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:119e0a4a6425620cbe4c5ce2de44948286861be186adb1fd6dc81801c0340644", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.91.34.117", "fd7a:115c:a1e0::3d28:2276"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:24Z", + "expires": "2027-04-18T13:08:24Z", + "hostname": "rt-plain", + "id": "{device:rt-plain}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:10:07Z", + "machineKey": "{machine:rt-plain}", + "name": "rt-plain.tail78f774.ts.net", + "nodeId": "{device:rt-plain}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:K-rt-plain}", + "os": "linux", + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:51d1e76a697361ad7854d71460b469f280f58656c3736c6f0ca75de8a018100c", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.94.159.72", "fd7a:115c:a1e0::ad28:9f49"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:26Z", + "expires": "2027-04-18T13:08:26Z", + "hostname": "rt", + "id": "{device:rt}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:10:07Z", + "machineKey": "{machine:rt}", + "name": "rt.tail78f774.ts.net", + "nodeId": "{device:rt}", + "nodeKey": "{nodekey:3}", + "oauthClientId": "{key:K-rt}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:a27dc0ed32d47d53efa6d8b86337d240e55810276e980e861ab3d0405a5c8dbf", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:22Z", + "expires": "2027-04-18T13:08:22Z", + "hostname": "srv", + "id": "{device:srv}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:10:07Z", + "machineKey": "{machine:srv}", + "name": "srv.tail78f774.ts.net", + "nodeId": "{device:srv}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:K-srv}", + "os": "linux", + "tags": ["tag:server"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:1d5ea3ea2f761a531a50c7ede90ceaf7fc2d0cdbdc1bf916ba391807dcabf5cb", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:31Z", + "expires": "2027-04-18T13:08:31Z", + "hostname": "thor-1", + "id": "{device:thor-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:10:07Z", + "machineKey": "{machine:thor-1}", + "name": "thor-1.tail78f774.ts.net", + "nodeId": "{device:thor-1}", + "nodeKey": "{nodekey:5}", + "oauthClientId": "{key:K-thor-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:550d77d64a67a3d8d847e26682ace8d4418f200bef86997a642e2daa52e3cd54", + "updateAvailable": true, + "user": "thor@example.org" + }, { + "addresses": ["100.98.185.9", "fd7a:115c:a1e0::2728:b90a"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:09:35Z", + "expires": "2027-04-18T13:09:35Z", + "hostname": "thor-2", + "id": "{device:thor-2}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:10:07Z", + "machineKey": "{machine:thor-2}", + "name": "thor-2.tail78f774.ts.net", + "nodeId": "{device:thor-2}", + "nodeKey": "{nodekey:7}", + "oauthClientId": "{key:K-thor-2}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:945c8ecf36d207cb9ac678e7bc30b39d96dfcc28a5f6de0b8419747a4c4be344", + "updateAvailable": true, + "user": "thor@example.org" + }]}, + "offset_ms": 32766 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:srv}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 32785 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt-plain}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 32802 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 32820 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:odin-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 32838 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:thor-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 32858 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:freya-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": ["10.55.1.0/24"], "enabledRoutes": ["10.55.1.0/24"]}, + "offset_ms": 32876 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:thor-2}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 32893 + }], + "captures": {"freya-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.100.187.71", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::8728:bb48", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.100.187.71/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::8728:bb48/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128", "10.55.1.0/24"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "Hostinfo": {"Hostname": "freya-1", "RoutableIPs": ["10.55.1.0/24"], "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "PrimaryRoutes": ["10.55.1.0/24"], + "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/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": "freya-1", + "ComputedNameWithHost": "freya-1" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "MachineKey": "mkey:6b108c8cff07e52e3488ef526109513c47034303ec9ec990c47de7620360ec49", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.100.187.71/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::8728:bb48/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.100.187.71", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::8728:bb48", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.100.187.71"}, {"nodeIP": "fd7a:115c:a1e0::8728:bb48"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.100.187.71"}, {"nodeIP": "fd7a:115c:a1e0::8728:bb48"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "odin-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "Hostinfo": {"Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "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": "odin-1", + "ComputedNameWithHost": "odin-1" + }, + "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:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "MachineKey": "mkey:d4aad92e11b56bf46c865cb54c99273a3f07bb4fea3e7d5109ee329df7c1a67b", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128", "10.55.1.0/24"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "PrimaryRoutes": ["10.55.1.0/24"], + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "rt": {"packet_filter_rules": [{"SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1760694666591341, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": [ + "100.94.159.72/32", + "fd7a:115c:a1e0::ad28:9f49/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "Hostinfo": { + "Hostname": "rt", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:router"], + "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:08:26.465714652Z", + "Tags": ["tag:router"], + "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": "rt", + "ComputedNameWithHost": "rt" + }, + "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:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "MachineKey": "mkey:aa000d00f3fa1b2efb6d0b135fef18aa40e458ae7f742e8473fca2c587ae5628", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1760694666591341": { + "ID": 1760694666591341, + "LoginName": "rt.tail78f774.ts.net", + "DisplayName": "rt" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "rt-plain": {"packet_filter_rules": [{ + "SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 4044323459478186, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "Hostinfo": { + "Hostname": "rt-plain", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:prod"], + "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:08:24.46815472Z", + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "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": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, + "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:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "MachineKey": "mkey:a90b7e809297543eeee90dec3ddc268d8353130b3c27a1984b5d5c336eb4eb56", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4044323459478186": { + "ID": 4044323459478186, + "LoginName": "rt-plain.tail78f774.ts.net", + "DisplayName": "rt-plain" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "srv": {"packet_filter_rules": [{"SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}} + ]}, {"SrcIPs": [ + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}} + ], "Caps": []}, {"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 17847873460602, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "Hostinfo": {"Hostname": "srv", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "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": "srv", + "ComputedNameWithHost": "srv" + }, + "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:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "MachineKey": "mkey:09821ae2a092955011cac786562b0659d1f7723cc7689ecdeceadd255e311032", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}} + ], "Caps": []}, {"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}} + ]}, {"SrcIPs": [ + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"17847873460602": { + "ID": 17847873460602, + "LoginName": "srv.tail78f774.ts.net", + "DisplayName": "srv" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}], "backend_state": "Running"}, "thor-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.89.52.31", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::28:3420", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.89.52.31/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::28:3420/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "Hostinfo": {"Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "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/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": "thor-1", + "ComputedNameWithHost": "thor-1" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "MachineKey": "mkey:3732617da8302b06ec17218fce16ee9afb08ebdd607e8f0c5a9349638035a72a", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.89.52.31/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::28:3420/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.89.52.31", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::28:3420", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"*": "=", "0": "", "root": ""}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}]}, + "CollectServices": false, + "DERPMap": null, + "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" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"*": "=", "0": "", "root": ""}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}], "backend_state": "Running"}, "thor-2": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.98.185.9", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::2728:b90a", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.98.185.9/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::2728:b90a/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Hostinfo": { + "Hostname": "thor-2", + "Services": [{"Proto": "peerapi-dns-proxy", "Port": 1}] + }, + "Created": "2026-10-20T13:09:34.646751414Z", + "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/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": "thor-2", + "ComputedNameWithHost": "thor-2" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "MachineKey": "mkey:096ef61f551cf525f73bfd1f43cda0ea05e1caf5f6ca140b281250cc2add9f5a", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.98.185.9/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::2728:b90a/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.98.185.9", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::2728:b90a", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"*": "=", "0": "", "root": ""}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}]}, + "CollectServices": false, + "DERPMap": null, + "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" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"*": "=", "0": "", "root": ""}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}], "backend_state": "Running"}}, + "register": {"thor-2": [{ + "node_key": "{nodekey:7}", + "node_key_expired": false, + "machine_authorized": true + }]} + }, { + "name": "G3", + "at": "2026-10-20T13:10:09.271440507Z", + "note": "last change 2s into the settle", + "result": "observed", + "actions": [{ + "kind": "api", + "key": "K-rt-b", + "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 K-rt-b", "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-20T13:10:09Z", + "description": "tscap-saasprobe K-rt-b", + "expires": "2026-10-20T14:10:09Z", + "expirySeconds": 3600, + "id": "{key:K-rt-b}", + "keyType": "auth", + "userId": "{user:odin}" + }, + "offset_ms": 16 + }, { + "kind": "join", + "node": "rt-b", + "key": "K-rt-b", + "request_tags": ["tag:router"], + "routes": ["10.44.0.0/16", "10.45.0.0/16"], + "hostname": "rt-b", + "offset_ms": 152 + }, {"kind": "wait", "args": ["quiet", "15s"], "offset_ms": 731}, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/devices", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"devices": [{ + "addresses": ["100.100.187.71", "fd7a:115c:a1e0::8728:bb48"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:09:02Z", + "expires": "2027-04-18T13:09:02Z", + "hostname": "freya-1", + "id": "{device:freya-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:10:44Z", + "machineKey": "{machine:freya-1}", + "name": "freya-1.tail78f774.ts.net", + "nodeId": "{device:freya-1}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:K-freya-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:c3fea318f84408b5b0f03fca6575efb99db569c8d980842c3203104a1c594cbc", + "updateAvailable": true, + "user": "freya@example.com" + }, { + "addresses": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:29Z", + "expires": "2027-04-18T13:08:29Z", + "hostname": "odin-1", + "id": "{device:odin-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:10:44Z", + "machineKey": "{machine:odin-1}", + "name": "odin-1.tail78f774.ts.net", + "nodeId": "{device:odin-1}", + "nodeKey": "{nodekey:4}", + "oauthClientId": "{key:K-odin-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:119e0a4a6425620cbe4c5ce2de44948286861be186adb1fd6dc81801c0340644", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.122.54.90", "fd7a:115c:a1e0::fc28:365b"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:10:10Z", + "expires": "2027-04-18T13:10:10Z", + "hostname": "rt-b", + "id": "{device:rt-b}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:10:44Z", + "machineKey": "{machine:rt-b}", + "name": "rt-b.tail78f774.ts.net", + "nodeId": "{device:rt-b}", + "nodeKey": "{nodekey:8}", + "oauthClientId": "{key:K-rt-b}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:bd4e3c2a19e3a856db3532ff147fd5c2fbd90db3c622c18efd7ba7d8d7de3781", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.91.34.117", "fd7a:115c:a1e0::3d28:2276"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:24Z", + "expires": "2027-04-18T13:08:24Z", + "hostname": "rt-plain", + "id": "{device:rt-plain}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:10:44Z", + "machineKey": "{machine:rt-plain}", + "name": "rt-plain.tail78f774.ts.net", + "nodeId": "{device:rt-plain}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:K-rt-plain}", + "os": "linux", + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:51d1e76a697361ad7854d71460b469f280f58656c3736c6f0ca75de8a018100c", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.94.159.72", "fd7a:115c:a1e0::ad28:9f49"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:26Z", + "expires": "2027-04-18T13:08:26Z", + "hostname": "rt", + "id": "{device:rt}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:10:44Z", + "machineKey": "{machine:rt}", + "name": "rt.tail78f774.ts.net", + "nodeId": "{device:rt}", + "nodeKey": "{nodekey:3}", + "oauthClientId": "{key:K-rt}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:a27dc0ed32d47d53efa6d8b86337d240e55810276e980e861ab3d0405a5c8dbf", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:22Z", + "expires": "2027-04-18T13:08:22Z", + "hostname": "srv", + "id": "{device:srv}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:10:44Z", + "machineKey": "{machine:srv}", + "name": "srv.tail78f774.ts.net", + "nodeId": "{device:srv}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:K-srv}", + "os": "linux", + "tags": ["tag:server"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:1d5ea3ea2f761a531a50c7ede90ceaf7fc2d0cdbdc1bf916ba391807dcabf5cb", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:31Z", + "expires": "2027-04-18T13:08:31Z", + "hostname": "thor-1", + "id": "{device:thor-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:10:44Z", + "machineKey": "{machine:thor-1}", + "name": "thor-1.tail78f774.ts.net", + "nodeId": "{device:thor-1}", + "nodeKey": "{nodekey:5}", + "oauthClientId": "{key:K-thor-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:550d77d64a67a3d8d847e26682ace8d4418f200bef86997a642e2daa52e3cd54", + "updateAvailable": true, + "user": "thor@example.org" + }, { + "addresses": ["100.98.185.9", "fd7a:115c:a1e0::2728:b90a"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:09:35Z", + "expires": "2027-04-18T13:09:35Z", + "hostname": "thor-2", + "id": "{device:thor-2}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:10:44Z", + "machineKey": "{machine:thor-2}", + "name": "thor-2.tail78f774.ts.net", + "nodeId": "{device:thor-2}", + "nodeKey": "{nodekey:7}", + "oauthClientId": "{key:K-thor-2}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:945c8ecf36d207cb9ac678e7bc30b39d96dfcc28a5f6de0b8419747a4c4be344", + "updateAvailable": true, + "user": "thor@example.org" + }]}, + "offset_ms": 34786 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:srv}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 34814 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt-plain}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 34833 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 34850 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:odin-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 34868 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:thor-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 34885 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:freya-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": ["10.55.1.0/24"], "enabledRoutes": ["10.55.1.0/24"]}, + "offset_ms": 34902 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:thor-2}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 34919 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt-b}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 34937 + }], + "captures": {"freya-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.100.187.71", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::8728:bb48", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.100.187.71/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::8728:bb48/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128", "10.55.1.0/24"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "Hostinfo": {"Hostname": "freya-1", "RoutableIPs": ["10.55.1.0/24"], "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "PrimaryRoutes": ["10.55.1.0/24"], + "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/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": "freya-1", + "ComputedNameWithHost": "freya-1" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "MachineKey": "mkey:6b108c8cff07e52e3488ef526109513c47034303ec9ec990c47de7620360ec49", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-b", "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203} + ]}, + "Created": "2026-10-20T13:10:09.555919884Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt-b", + "ComputedNameWithHost": "rt-b" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.100.187.71/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::8728:bb48/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.100.187.71", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::8728:bb48", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.100.187.71"}, {"nodeIP": "fd7a:115c:a1e0::8728:bb48"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.100.187.71"}, {"nodeIP": "fd7a:115c:a1e0::8728:bb48"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "odin-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "Hostinfo": {"Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "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": "odin-1", + "ComputedNameWithHost": "odin-1" + }, + "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:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "MachineKey": "mkey:d4aad92e11b56bf46c865cb54c99273a3f07bb4fea3e7d5109ee329df7c1a67b", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128", "10.55.1.0/24"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "PrimaryRoutes": ["10.55.1.0/24"], + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-b", "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203} + ]}, + "Created": "2026-10-20T13:10:09.555919884Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt-b", + "ComputedNameWithHost": "rt-b" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "rt": {"packet_filter_rules": [{"SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1760694666591341, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": [ + "100.94.159.72/32", + "fd7a:115c:a1e0::ad28:9f49/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "Hostinfo": { + "Hostname": "rt", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:router"], + "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:08:26.465714652Z", + "Tags": ["tag:router"], + "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": "rt", + "ComputedNameWithHost": "rt" + }, + "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:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "MachineKey": "mkey:aa000d00f3fa1b2efb6d0b135fef18aa40e458ae7f742e8473fca2c587ae5628", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1760694666591341": { + "ID": 1760694666591341, + "LoginName": "rt.tail78f774.ts.net", + "DisplayName": "rt" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "rt-b": {"packet_filter_rules": [{"SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 3000953077253870, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": [ + "100.122.54.90/32", + "fd7a:115c:a1e0::fc28:365b/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Hostinfo": { + "Hostname": "rt-b", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:router"], + "Services": [{"Proto": "peerapi-dns-proxy", "Port": 1}] + }, + "Created": "2026-10-20T13:10:09.555919884Z", + "Tags": ["tag:router"], + "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": "rt-b", + "ComputedNameWithHost": "rt-b" + }, + "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:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "MachineKey": "mkey:ca577c6ff6ff24a55ec3a1c16049bab9ff4c37911d63424a3971ef438c5d051e", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3000953077253870": { + "ID": 3000953077253870, + "LoginName": "rt-b.tail78f774.ts.net", + "DisplayName": "rt-b" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "rt-plain": {"packet_filter_rules": [{ + "SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 4044323459478186, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "Hostinfo": { + "Hostname": "rt-plain", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:prod"], + "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:08:24.46815472Z", + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "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": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, + "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:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "MachineKey": "mkey:a90b7e809297543eeee90dec3ddc268d8353130b3c27a1984b5d5c336eb4eb56", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4044323459478186": { + "ID": 4044323459478186, + "LoginName": "rt-plain.tail78f774.ts.net", + "DisplayName": "rt-plain" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "srv": {"packet_filter_rules": [{"SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}} + ]}, {"SrcIPs": [ + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}} + ], "Caps": []}, {"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 17847873460602, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "Hostinfo": {"Hostname": "srv", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "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": "srv", + "ComputedNameWithHost": "srv" + }, + "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:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "MachineKey": "mkey:09821ae2a092955011cac786562b0659d1f7723cc7689ecdeceadd255e311032", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}} + ], "Caps": []}, {"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}} + ]}, {"SrcIPs": [ + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"17847873460602": { + "ID": 17847873460602, + "LoginName": "srv.tail78f774.ts.net", + "DisplayName": "srv" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}], "backend_state": "Running"}, "thor-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.89.52.31", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::28:3420", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.89.52.31/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::28:3420/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "Hostinfo": {"Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "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/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": "thor-1", + "ComputedNameWithHost": "thor-1" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "MachineKey": "mkey:3732617da8302b06ec17218fce16ee9afb08ebdd607e8f0c5a9349638035a72a", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-b", "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203} + ]}, + "Created": "2026-10-20T13:10:09.555919884Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt-b", + "ComputedNameWithHost": "rt-b" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.89.52.31/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::28:3420/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.89.52.31", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::28:3420", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"*": "=", "0": "", "root": ""}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}]}, + "CollectServices": false, + "DERPMap": null, + "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" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"*": "=", "0": "", "root": ""}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}], "backend_state": "Running"}, "thor-2": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.98.185.9", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::2728:b90a", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.98.185.9/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::2728:b90a/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "Hostinfo": {"Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "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/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": "thor-2", + "ComputedNameWithHost": "thor-2" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "MachineKey": "mkey:096ef61f551cf525f73bfd1f43cda0ea05e1caf5f6ca140b281250cc2add9f5a", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-b", "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203} + ]}, + "Created": "2026-10-20T13:10:09.555919884Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt-b", + "ComputedNameWithHost": "rt-b" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.98.185.9/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::2728:b90a/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.98.185.9", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::2728:b90a", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"*": "=", "0": "", "root": ""}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}]}, + "CollectServices": false, + "DERPMap": null, + "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" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"*": "=", "0": "", "root": ""}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}], "backend_state": "Running"}}, + "register": {"rt-b": [{ + "node_key": "{nodekey:8}", + "node_key_expired": false, + "machine_authorized": true + }]} + }, { + "name": "G4", + "at": "2026-10-20T13:10:46.234939538Z", + "note": "last change 2s into the settle", + "result": "observed", + "actions": [{ + "kind": "advertise", + "node": "rt", + "args": ["set", "--advertise-routes="], + "exit": 0 + }, {"kind": "wait", "args": ["quiet", "15s"], "offset_ms": 5155}, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/devices", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"devices": [{ + "addresses": ["100.100.187.71", "fd7a:115c:a1e0::8728:bb48"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:09:02Z", + "expires": "2027-04-18T13:09:02Z", + "hostname": "freya-1", + "id": "{device:freya-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:11:25Z", + "machineKey": "{machine:freya-1}", + "name": "freya-1.tail78f774.ts.net", + "nodeId": "{device:freya-1}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:K-freya-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:c3fea318f84408b5b0f03fca6575efb99db569c8d980842c3203104a1c594cbc", + "updateAvailable": true, + "user": "freya@example.com" + }, { + "addresses": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:29Z", + "expires": "2027-04-18T13:08:29Z", + "hostname": "odin-1", + "id": "{device:odin-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:11:25Z", + "machineKey": "{machine:odin-1}", + "name": "odin-1.tail78f774.ts.net", + "nodeId": "{device:odin-1}", + "nodeKey": "{nodekey:4}", + "oauthClientId": "{key:K-odin-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:119e0a4a6425620cbe4c5ce2de44948286861be186adb1fd6dc81801c0340644", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.122.54.90", "fd7a:115c:a1e0::fc28:365b"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:10:10Z", + "expires": "2027-04-18T13:10:10Z", + "hostname": "rt-b", + "id": "{device:rt-b}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:11:25Z", + "machineKey": "{machine:rt-b}", + "name": "rt-b.tail78f774.ts.net", + "nodeId": "{device:rt-b}", + "nodeKey": "{nodekey:8}", + "oauthClientId": "{key:K-rt-b}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:bd4e3c2a19e3a856db3532ff147fd5c2fbd90db3c622c18efd7ba7d8d7de3781", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.91.34.117", "fd7a:115c:a1e0::3d28:2276"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:24Z", + "expires": "2027-04-18T13:08:24Z", + "hostname": "rt-plain", + "id": "{device:rt-plain}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:11:25Z", + "machineKey": "{machine:rt-plain}", + "name": "rt-plain.tail78f774.ts.net", + "nodeId": "{device:rt-plain}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:K-rt-plain}", + "os": "linux", + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:51d1e76a697361ad7854d71460b469f280f58656c3736c6f0ca75de8a018100c", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.94.159.72", "fd7a:115c:a1e0::ad28:9f49"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:26Z", + "expires": "2027-04-18T13:08:26Z", + "hostname": "rt", + "id": "{device:rt}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:11:25Z", + "machineKey": "{machine:rt}", + "name": "rt.tail78f774.ts.net", + "nodeId": "{device:rt}", + "nodeKey": "{nodekey:3}", + "oauthClientId": "{key:K-rt}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:a27dc0ed32d47d53efa6d8b86337d240e55810276e980e861ab3d0405a5c8dbf", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:22Z", + "expires": "2027-04-18T13:08:22Z", + "hostname": "srv", + "id": "{device:srv}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:11:25Z", + "machineKey": "{machine:srv}", + "name": "srv.tail78f774.ts.net", + "nodeId": "{device:srv}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:K-srv}", + "os": "linux", + "tags": ["tag:server"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:1d5ea3ea2f761a531a50c7ede90ceaf7fc2d0cdbdc1bf916ba391807dcabf5cb", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:31Z", + "expires": "2027-04-18T13:08:31Z", + "hostname": "thor-1", + "id": "{device:thor-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:11:25Z", + "machineKey": "{machine:thor-1}", + "name": "thor-1.tail78f774.ts.net", + "nodeId": "{device:thor-1}", + "nodeKey": "{nodekey:5}", + "oauthClientId": "{key:K-thor-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:550d77d64a67a3d8d847e26682ace8d4418f200bef86997a642e2daa52e3cd54", + "updateAvailable": true, + "user": "thor@example.org" + }, { + "addresses": ["100.98.185.9", "fd7a:115c:a1e0::2728:b90a"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:09:35Z", + "expires": "2027-04-18T13:09:35Z", + "hostname": "thor-2", + "id": "{device:thor-2}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:11:25Z", + "machineKey": "{machine:thor-2}", + "name": "thor-2.tail78f774.ts.net", + "nodeId": "{device:thor-2}", + "nodeKey": "{nodekey:7}", + "oauthClientId": "{key:K-thor-2}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:945c8ecf36d207cb9ac678e7bc30b39d96dfcc28a5f6de0b8419747a4c4be344", + "updateAvailable": true, + "user": "thor@example.org" + }]}, + "offset_ms": 39198 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:srv}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 39236 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt-plain}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 39253 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 39270 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:odin-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 39288 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:thor-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 39305 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:freya-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": ["10.55.1.0/24"], "enabledRoutes": ["10.55.1.0/24"]}, + "offset_ms": 39323 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:thor-2}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 39340 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt-b}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 39357 + }], + "captures": {"freya-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.100.187.71", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::8728:bb48", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.100.187.71/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::8728:bb48/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128", "10.55.1.0/24"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "Hostinfo": {"Hostname": "freya-1", "RoutableIPs": ["10.55.1.0/24"], "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "PrimaryRoutes": ["10.55.1.0/24"], + "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/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": "freya-1", + "ComputedNameWithHost": "freya-1" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "MachineKey": "mkey:6b108c8cff07e52e3488ef526109513c47034303ec9ec990c47de7620360ec49", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-b", "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203} + ]}, + "Created": "2026-10-20T13:10:09.555919884Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt-b", + "ComputedNameWithHost": "rt-b" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.100.187.71/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::8728:bb48/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.100.187.71", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::8728:bb48", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.100.187.71"}, {"nodeIP": "fd7a:115c:a1e0::8728:bb48"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.100.187.71"}, {"nodeIP": "fd7a:115c:a1e0::8728:bb48"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "odin-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "Hostinfo": {"Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "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": "odin-1", + "ComputedNameWithHost": "odin-1" + }, + "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:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "MachineKey": "mkey:d4aad92e11b56bf46c865cb54c99273a3f07bb4fea3e7d5109ee329df7c1a67b", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128", "10.55.1.0/24"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "PrimaryRoutes": ["10.55.1.0/24"], + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-b", "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203} + ]}, + "Created": "2026-10-20T13:10:09.555919884Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt-b", + "ComputedNameWithHost": "rt-b" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "rt": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1760694666591341, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "Hostinfo": {"Hostname": "rt", "RequestTags": ["tag:router"], "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Tags": ["tag:router"], + "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": "rt", + "ComputedNameWithHost": "rt" + }, + "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:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "MachineKey": "mkey:aa000d00f3fa1b2efb6d0b135fef18aa40e458ae7f742e8473fca2c587ae5628", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1760694666591341": { + "ID": 1760694666591341, + "LoginName": "rt.tail78f774.ts.net", + "DisplayName": "rt" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "backend_state": "Running"}, "rt-b": {"packet_filter_rules": [{"SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 3000953077253870, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": [ + "100.122.54.90/32", + "fd7a:115c:a1e0::fc28:365b/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "Hostinfo": { + "Hostname": "rt-b", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:router"], + "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:10:09.555919884Z", + "Tags": ["tag:router"], + "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": "rt-b", + "ComputedNameWithHost": "rt-b" + }, + "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:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "MachineKey": "mkey:ca577c6ff6ff24a55ec3a1c16049bab9ff4c37911d63424a3971ef438c5d051e", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3000953077253870": { + "ID": 3000953077253870, + "LoginName": "rt-b.tail78f774.ts.net", + "DisplayName": "rt-b" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "rt-plain": {"packet_filter_rules": [{ + "SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 4044323459478186, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "Hostinfo": { + "Hostname": "rt-plain", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:prod"], + "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:08:24.46815472Z", + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "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": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, + "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:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "MachineKey": "mkey:a90b7e809297543eeee90dec3ddc268d8353130b3c27a1984b5d5c336eb4eb56", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4044323459478186": { + "ID": 4044323459478186, + "LoginName": "rt-plain.tail78f774.ts.net", + "DisplayName": "rt-plain" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "srv": {"packet_filter_rules": [{"SrcIPs": [ + "100.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}} + ]}, {"SrcIPs": [ + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}} + ], "Caps": []}, {"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 17847873460602, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "Hostinfo": {"Hostname": "srv", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "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": "srv", + "ComputedNameWithHost": "srv" + }, + "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:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "MachineKey": "mkey:09821ae2a092955011cac786562b0659d1f7723cc7689ecdeceadd255e311032", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}} + ], "Caps": []}, {"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.89.52.31/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::28:3420/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}} + ]}, {"SrcIPs": [ + "100.89.52.31", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::28:3420" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"17847873460602": { + "ID": 17847873460602, + "LoginName": "srv.tail78f774.ts.net", + "DisplayName": "srv" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}], "backend_state": "Running"}, "thor-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.89.52.31", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::28:3420", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.89.52.31/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::28:3420/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "Hostinfo": {"Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "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/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": "thor-1", + "ComputedNameWithHost": "thor-1" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "MachineKey": "mkey:3732617da8302b06ec17218fce16ee9afb08ebdd607e8f0c5a9349638035a72a", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-b", "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203} + ]}, + "Created": "2026-10-20T13:10:09.555919884Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt-b", + "ComputedNameWithHost": "rt-b" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.89.52.31/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::28:3420/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.89.52.31", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::28:3420", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"*": "=", "0": "", "root": ""}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}]}, + "CollectServices": false, + "DERPMap": null, + "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" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"*": "=", "0": "", "root": ""}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}], "backend_state": "Running"}, "thor-2": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.98.185.9", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::2728:b90a", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.98.185.9/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::2728:b90a/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "Hostinfo": {"Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "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/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": "thor-2", + "ComputedNameWithHost": "thor-2" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "MachineKey": "mkey:096ef61f551cf525f73bfd1f43cda0ea05e1caf5f6ca140b281250cc2add9f5a", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-b", "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203} + ]}, + "Created": "2026-10-20T13:10:09.555919884Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt-b", + "ComputedNameWithHost": "rt-b" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.98.185.9/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::2728:b90a/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.98.185.9", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::2728:b90a", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"*": "=", "0": "", "root": ""}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}]}, + "CollectServices": false, + "DERPMap": null, + "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" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{"principals": [ + {"nodeIP": "100.89.52.31"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::28:3420"} + ], "sshUsers": {"*": "=", "0": "", "root": ""}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}], "backend_state": "Running"}} + }, { + "name": "G5", + "at": "2026-10-20T13:11:27.617900141Z", + "note": "last change 2s into the settle", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/device/{device:thor-1}/tags", + "header": {"Content-Type": "application/json"}, + "body": {"tags": ["tag:prod"]}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": null + }, {"kind": "wait", "args": ["quiet", "15s"], "offset_ms": 2019}, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/devices", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"devices": [{ + "addresses": ["100.100.187.71", "fd7a:115c:a1e0::8728:bb48"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:09:02Z", + "expires": "2027-04-18T13:09:02Z", + "hostname": "freya-1", + "id": "{device:freya-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:12:04Z", + "machineKey": "{machine:freya-1}", + "name": "freya-1.tail78f774.ts.net", + "nodeId": "{device:freya-1}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:K-freya-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:c3fea318f84408b5b0f03fca6575efb99db569c8d980842c3203104a1c594cbc", + "updateAvailable": true, + "user": "freya@example.com" + }, { + "addresses": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:29Z", + "expires": "2027-04-18T13:08:29Z", + "hostname": "odin-1", + "id": "{device:odin-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:12:04Z", + "machineKey": "{machine:odin-1}", + "name": "odin-1.tail78f774.ts.net", + "nodeId": "{device:odin-1}", + "nodeKey": "{nodekey:4}", + "oauthClientId": "{key:K-odin-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:119e0a4a6425620cbe4c5ce2de44948286861be186adb1fd6dc81801c0340644", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.122.54.90", "fd7a:115c:a1e0::fc28:365b"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:10:10Z", + "expires": "2027-04-18T13:10:10Z", + "hostname": "rt-b", + "id": "{device:rt-b}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:12:04Z", + "machineKey": "{machine:rt-b}", + "name": "rt-b.tail78f774.ts.net", + "nodeId": "{device:rt-b}", + "nodeKey": "{nodekey:8}", + "oauthClientId": "{key:K-rt-b}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:bd4e3c2a19e3a856db3532ff147fd5c2fbd90db3c622c18efd7ba7d8d7de3781", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.91.34.117", "fd7a:115c:a1e0::3d28:2276"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:24Z", + "expires": "2027-04-18T13:08:24Z", + "hostname": "rt-plain", + "id": "{device:rt-plain}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:12:04Z", + "machineKey": "{machine:rt-plain}", + "name": "rt-plain.tail78f774.ts.net", + "nodeId": "{device:rt-plain}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:K-rt-plain}", + "os": "linux", + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:51d1e76a697361ad7854d71460b469f280f58656c3736c6f0ca75de8a018100c", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.94.159.72", "fd7a:115c:a1e0::ad28:9f49"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:26Z", + "expires": "2027-04-18T13:08:26Z", + "hostname": "rt", + "id": "{device:rt}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:12:04Z", + "machineKey": "{machine:rt}", + "name": "rt.tail78f774.ts.net", + "nodeId": "{device:rt}", + "nodeKey": "{nodekey:3}", + "oauthClientId": "{key:K-rt}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:a27dc0ed32d47d53efa6d8b86337d240e55810276e980e861ab3d0405a5c8dbf", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:22Z", + "expires": "2027-04-18T13:08:22Z", + "hostname": "srv", + "id": "{device:srv}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:12:04Z", + "machineKey": "{machine:srv}", + "name": "srv.tail78f774.ts.net", + "nodeId": "{device:srv}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:K-srv}", + "os": "linux", + "tags": ["tag:server"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:1d5ea3ea2f761a531a50c7ede90ceaf7fc2d0cdbdc1bf916ba391807dcabf5cb", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:31Z", + "expires": "2027-04-18T13:08:31Z", + "hostname": "thor-1", + "id": "{device:thor-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:12:04Z", + "machineKey": "{machine:thor-1}", + "name": "thor-1.tail78f774.ts.net", + "nodeId": "{device:thor-1}", + "nodeKey": "{nodekey:5}", + "oauthClientId": "{key:K-thor-1}", + "os": "linux", + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:550d77d64a67a3d8d847e26682ace8d4418f200bef86997a642e2daa52e3cd54", + "updateAvailable": true, + "user": "thor@example.org" + }, { + "addresses": ["100.98.185.9", "fd7a:115c:a1e0::2728:b90a"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:09:35Z", + "expires": "2027-04-18T13:09:35Z", + "hostname": "thor-2", + "id": "{device:thor-2}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:12:04Z", + "machineKey": "{machine:thor-2}", + "name": "thor-2.tail78f774.ts.net", + "nodeId": "{device:thor-2}", + "nodeKey": "{nodekey:7}", + "oauthClientId": "{key:K-thor-2}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:945c8ecf36d207cb9ac678e7bc30b39d96dfcc28a5f6de0b8419747a4c4be344", + "updateAvailable": true, + "user": "thor@example.org" + }]}, + "offset_ms": 36077 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:srv}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 36113 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt-plain}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 36131 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 36148 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:odin-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 36164 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:thor-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 36181 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:freya-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": ["10.55.1.0/24"], "enabledRoutes": ["10.55.1.0/24"]}, + "offset_ms": 36199 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:thor-2}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 36216 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt-b}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 36233 + }], + "captures": {"freya-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.100.187.71", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::8728:bb48", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.100.187.71/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::8728:bb48/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128", "10.55.1.0/24"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "Hostinfo": {"Hostname": "freya-1", "RoutableIPs": ["10.55.1.0/24"], "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "PrimaryRoutes": ["10.55.1.0/24"], + "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/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": "freya-1", + "ComputedNameWithHost": "freya-1" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "MachineKey": "mkey:6b108c8cff07e52e3488ef526109513c47034303ec9ec990c47de7620360ec49", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-b", "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203} + ]}, + "Created": "2026-10-20T13:10:09.555919884Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt-b", + "ComputedNameWithHost": "rt-b" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.100.187.71/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::8728:bb48/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.100.187.71", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::8728:bb48", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.100.187.71"}, {"nodeIP": "fd7a:115c:a1e0::8728:bb48"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.100.187.71"}, {"nodeIP": "fd7a:115c:a1e0::8728:bb48"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "odin-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "Hostinfo": {"Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "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": "odin-1", + "ComputedNameWithHost": "odin-1" + }, + "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:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "MachineKey": "mkey:d4aad92e11b56bf46c865cb54c99273a3f07bb4fea3e7d5109ee329df7c1a67b", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128", "10.55.1.0/24"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "PrimaryRoutes": ["10.55.1.0/24"], + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-b", "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203} + ]}, + "Created": "2026-10-20T13:10:09.555919884Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt-b", + "ComputedNameWithHost": "rt-b" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Tags": ["tag:prod"], + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "rt": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1760694666591341, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "Hostinfo": {"Hostname": "rt", "RequestTags": ["tag:router"], "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Tags": ["tag:router"], + "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": "rt", + "ComputedNameWithHost": "rt" + }, + "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:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "MachineKey": "mkey:aa000d00f3fa1b2efb6d0b135fef18aa40e458ae7f742e8473fca2c587ae5628", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1760694666591341": { + "ID": 1760694666591341, + "LoginName": "rt.tail78f774.ts.net", + "DisplayName": "rt" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "backend_state": "Running"}, "rt-b": {"packet_filter_rules": [{"SrcIPs": [ + "100.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": [ + "100.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 3000953077253870, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": [ + "100.122.54.90/32", + "fd7a:115c:a1e0::fc28:365b/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "Hostinfo": { + "Hostname": "rt-b", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:router"], + "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:10:09.555919884Z", + "Tags": ["tag:router"], + "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": "rt-b", + "ComputedNameWithHost": "rt-b" + }, + "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:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "MachineKey": "mkey:ca577c6ff6ff24a55ec3a1c16049bab9ff4c37911d63424a3971ef438c5d051e", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": [ + "100.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3000953077253870": { + "ID": 3000953077253870, + "LoginName": "rt-b.tail78f774.ts.net", + "DisplayName": "rt-b" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "rt-plain": {"packet_filter_rules": [{ + "SrcIPs": [ + "100.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 4044323459478186, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "Hostinfo": { + "Hostname": "rt-plain", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:prod"], + "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:08:24.46815472Z", + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "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": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, + "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:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "MachineKey": "mkey:a90b7e809297543eeee90dec3ddc268d8353130b3c27a1984b5d5c336eb4eb56", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4044323459478186": { + "ID": 4044323459478186, + "LoginName": "rt-plain.tail78f774.ts.net", + "DisplayName": "rt-plain" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "srv": {"packet_filter_rules": [{"SrcIPs": [ + "100.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}} + ]}, {"SrcIPs": ["100.98.185.9", "fd7a:115c:a1e0::2728:b90a"], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 17847873460602, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "Hostinfo": {"Hostname": "srv", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "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": "srv", + "ComputedNameWithHost": "srv" + }, + "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:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "MachineKey": "mkey:09821ae2a092955011cac786562b0659d1f7723cc7689ecdeceadd255e311032", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "Cap": 142, + "Online": true, + "ComputedName": "thor-2", + "ComputedNameWithHost": "thor-2" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}} + ]}, {"SrcIPs": ["100.98.185.9", "fd7a:115c:a1e0::2728:b90a"], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, { + "principals": [{"nodeIP": "100.98.185.9"}, {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}], + "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"17847873460602": { + "ID": 17847873460602, + "LoginName": "srv.tail78f774.ts.net", + "DisplayName": "srv" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, { + "principals": [{"nodeIP": "100.98.185.9"}, {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}], + "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "thor-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 7845596747036187, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "Hostinfo": {"Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Tags": ["tag:prod"], + "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": "thor-1", + "ComputedNameWithHost": "thor-1" + }, + "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:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "MachineKey": "mkey:3732617da8302b06ec17218fce16ee9afb08ebdd607e8f0c5a9349638035a72a", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "7845596747036187": { + "ID": 7845596747036187, + "LoginName": "thor-1.tail78f774.ts.net", + "DisplayName": "thor-1" + }} + }, "backend_state": "Running"}, "thor-2": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.98.185.9", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::2728:b90a", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.98.185.9/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::2728:b90a/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 4275230665643566, + "StableID": "njBq5V4GPa11CNTRL", + "Name": "thor-2.tail78f774.ts.net.", + "User": 4538565228176803, + "Key": "nodekey:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "KeyExpiry": "2027-04-18T13:09:34Z", + "DiscoKey": "discokey:a8c0abc49de0082c1fbece932225bc14d6fa71b1b988bc1577b1165452f0e026", + "Addresses": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "AllowedIPs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "Endpoints": [ + "192.0.2.1:57285", + "198.51.100.1:57285", + "198.51.100.2:57285", + "198.51.100.3:57285", + "198.51.100.4:57285", + "198.51.100.5:57285", + "198.51.100.6:57285", + "198.51.100.7:57285" + ], + "Hostinfo": {"Hostname": "thor-2", "Services": [ + {"Proto": "peerapi4", "Port": 60169}, + {"Proto": "peerapi6", "Port": 60169}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:09:34.646751414Z", + "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/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": "thor-2", + "ComputedNameWithHost": "thor-2" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:ced8e70e8418ee478c3dc8ac39d42ad5b210da188d398a07accceacd2722b909", + "MachineKey": "mkey:096ef61f551cf525f73bfd1f43cda0ea05e1caf5f6ca140b281250cc2add9f5a", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-b", "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203} + ]}, + "Created": "2026-10-20T13:10:09.555919884Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt-b", + "ComputedNameWithHost": "rt-b" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.98.185.9/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::2728:b90a/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.98.185.9", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::2728:b90a", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.98.185.9"}, {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "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" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.98.185.9"}, {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}} + }, { + "name": "G7", + "at": "2026-10-20T13:12:05.87404328Z", + "note": "last change 2s into the settle", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "DELETE", + "path": "/device/{device:thor-2}", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": null + }, {"kind": "wait", "args": ["quiet", "15s"], "offset_ms": 23}, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/devices", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"devices": [{ + "addresses": ["100.100.187.71", "fd7a:115c:a1e0::8728:bb48"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:09:02Z", + "expires": "2027-04-18T13:09:02Z", + "hostname": "freya-1", + "id": "{device:freya-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:12:38Z", + "machineKey": "{machine:freya-1}", + "name": "freya-1.tail78f774.ts.net", + "nodeId": "{device:freya-1}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:K-freya-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:c3fea318f84408b5b0f03fca6575efb99db569c8d980842c3203104a1c594cbc", + "updateAvailable": true, + "user": "freya@example.com" + }, { + "addresses": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:29Z", + "expires": "2027-04-18T13:08:29Z", + "hostname": "odin-1", + "id": "{device:odin-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:12:38Z", + "machineKey": "{machine:odin-1}", + "name": "odin-1.tail78f774.ts.net", + "nodeId": "{device:odin-1}", + "nodeKey": "{nodekey:4}", + "oauthClientId": "{key:K-odin-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:119e0a4a6425620cbe4c5ce2de44948286861be186adb1fd6dc81801c0340644", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.122.54.90", "fd7a:115c:a1e0::fc28:365b"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:10:10Z", + "expires": "2027-04-18T13:10:10Z", + "hostname": "rt-b", + "id": "{device:rt-b}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:12:38Z", + "machineKey": "{machine:rt-b}", + "name": "rt-b.tail78f774.ts.net", + "nodeId": "{device:rt-b}", + "nodeKey": "{nodekey:8}", + "oauthClientId": "{key:K-rt-b}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:bd4e3c2a19e3a856db3532ff147fd5c2fbd90db3c622c18efd7ba7d8d7de3781", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.91.34.117", "fd7a:115c:a1e0::3d28:2276"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:24Z", + "expires": "2027-04-18T13:08:24Z", + "hostname": "rt-plain", + "id": "{device:rt-plain}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:12:38Z", + "machineKey": "{machine:rt-plain}", + "name": "rt-plain.tail78f774.ts.net", + "nodeId": "{device:rt-plain}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:K-rt-plain}", + "os": "linux", + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:51d1e76a697361ad7854d71460b469f280f58656c3736c6f0ca75de8a018100c", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.94.159.72", "fd7a:115c:a1e0::ad28:9f49"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:26Z", + "expires": "2027-04-18T13:08:26Z", + "hostname": "rt", + "id": "{device:rt}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:12:38Z", + "machineKey": "{machine:rt}", + "name": "rt.tail78f774.ts.net", + "nodeId": "{device:rt}", + "nodeKey": "{nodekey:3}", + "oauthClientId": "{key:K-rt}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:a27dc0ed32d47d53efa6d8b86337d240e55810276e980e861ab3d0405a5c8dbf", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:22Z", + "expires": "2027-04-18T13:08:22Z", + "hostname": "srv", + "id": "{device:srv}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:12:38Z", + "machineKey": "{machine:srv}", + "name": "srv.tail78f774.ts.net", + "nodeId": "{device:srv}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:K-srv}", + "os": "linux", + "tags": ["tag:server"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:1d5ea3ea2f761a531a50c7ede90ceaf7fc2d0cdbdc1bf916ba391807dcabf5cb", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:31Z", + "expires": "2027-04-18T13:08:31Z", + "hostname": "thor-1", + "id": "{device:thor-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:12:38Z", + "machineKey": "{machine:thor-1}", + "name": "thor-1.tail78f774.ts.net", + "nodeId": "{device:thor-1}", + "nodeKey": "{nodekey:5}", + "oauthClientId": "{key:K-thor-1}", + "os": "linux", + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:550d77d64a67a3d8d847e26682ace8d4418f200bef86997a642e2daa52e3cd54", + "updateAvailable": true, + "user": "thor@example.org" + }]}, + "offset_ms": 32069 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:srv}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 32089 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt-plain}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 32107 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 32124 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:odin-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 32141 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:thor-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 32158 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:freya-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": ["10.55.1.0/24"], "enabledRoutes": ["10.55.1.0/24"]}, + "offset_ms": 32175 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt-b}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 32192 + }], + "captures": {"freya-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.100.187.71", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::8728:bb48", "Ports": {"First": 9100, "Last": 9100}} + ]}], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.100.187.71/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::8728:bb48/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], "netmap": { + "Cached": false, + "SelfNode": { + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128", "10.55.1.0/24"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "Hostinfo": {"Hostname": "freya-1", "RoutableIPs": ["10.55.1.0/24"], "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "PrimaryRoutes": ["10.55.1.0/24"], + "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/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": "freya-1", + "ComputedNameWithHost": "freya-1" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "MachineKey": "mkey:6b108c8cff07e52e3488ef526109513c47034303ec9ec990c47de7620360ec49", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }, { + "ID": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128", "10.44.0.0/16"], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-b", "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203} + ]}, + "Created": "2026-10-20T13:10:09.555919884Z", + "Cap": 142, + "Tags": ["tag:router"], + "PrimaryRoutes": ["10.44.0.0/16"], + "Online": true, + "ComputedName": "rt-b", + "ComputedNameWithHost": "rt-b" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128", "10.45.0.0/16"], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "SrcCaps": null, + "Dsts": [{"Net": "100.100.187.71/32", "Ports": {"First": 9100, "Last": 9100}}, { + "Net": "fd7a:115c:a1e0::8728:bb48/128", + "Ports": {"First": 9100, "Last": 9100} + }], + "Caps": [] + }], + "PacketFilterRules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }, {"SrcIPs": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], "DstPorts": [ + {"IP": "100.100.187.71", "Ports": {"First": 9100, "Last": 9100}}, + {"IP": "fd7a:115c:a1e0::8728:bb48", "Ports": {"First": 9100, "Last": 9100}} + ]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.100.187.71"}, {"nodeIP": "fd7a:115c:a1e0::8728:bb48"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.100.187.71"}, {"nodeIP": "fd7a:115c:a1e0::8728:bb48"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "odin-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "Hostinfo": {"Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "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": "odin-1", + "ComputedNameWithHost": "odin-1" + }, + "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:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "MachineKey": "mkey:d4aad92e11b56bf46c865cb54c99273a3f07bb4fea3e7d5109ee329df7c1a67b", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128", "10.55.1.0/24"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "PrimaryRoutes": ["10.55.1.0/24"], + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-b", "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203} + ]}, + "Created": "2026-10-20T13:10:09.555919884Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt-b", + "ComputedNameWithHost": "rt-b" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Tags": ["tag:prod"], + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "rt": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1760694666591341, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "Hostinfo": {"Hostname": "rt", "RequestTags": ["tag:router"], "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Tags": ["tag:router"], + "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": "rt", + "ComputedNameWithHost": "rt" + }, + "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:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "MachineKey": "mkey:aa000d00f3fa1b2efb6d0b135fef18aa40e458ae7f742e8473fca2c587ae5628", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1760694666591341": { + "ID": 1760694666591341, + "LoginName": "rt.tail78f774.ts.net", + "DisplayName": "rt" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "backend_state": "Running"}, "rt-b": {"packet_filter_rules": [{"SrcIPs": [ + "100.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": [ + "100.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 3000953077253870, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": [ + "100.122.54.90/32", + "fd7a:115c:a1e0::fc28:365b/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "Hostinfo": { + "Hostname": "rt-b", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:router"], + "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:10:09.555919884Z", + "Tags": ["tag:router"], + "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": "rt-b", + "ComputedNameWithHost": "rt-b" + }, + "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:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "MachineKey": "mkey:ca577c6ff6ff24a55ec3a1c16049bab9ff4c37911d63424a3971ef438c5d051e", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.0.0/16", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.44.1.0/24", "Ports": {"First": 0, "Last": 65535}}, + {"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}} + ]}, { + "SrcIPs": [ + "100.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3000953077253870": { + "ID": 3000953077253870, + "LoginName": "rt-b.tail78f774.ts.net", + "DisplayName": "rt-b" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "rt-plain": {"packet_filter_rules": [{ + "SrcIPs": [ + "100.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 4044323459478186, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "Hostinfo": { + "Hostname": "rt-plain", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:prod"], + "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:08:24.46815472Z", + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "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": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, + "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:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "MachineKey": "mkey:a90b7e809297543eeee90dec3ddc268d8353130b3c27a1984b5d5c336eb4eb56", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], + "SrcCaps": null, + "Dsts": [{"Net": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], + "DstPorts": [{"IP": "10.45.0.0/16", "Ports": {"First": 0, "Last": 65535}}] + }, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4044323459478186": { + "ID": 4044323459478186, + "LoginName": "rt-plain.tail78f774.ts.net", + "DisplayName": "rt-plain" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "srv": {"packet_filter_rules": [{"SrcIPs": [ + "100.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}} + ]}, {"SrcIPs": ["100.98.185.9", "fd7a:115c:a1e0::2728:b90a"], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 17847873460602, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "Hostinfo": {"Hostname": "srv", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "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": "srv", + "ComputedNameWithHost": "srv" + }, + "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:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "MachineKey": "mkey:09821ae2a092955011cac786562b0659d1f7723cc7689ecdeceadd255e311032", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.100.187.71/32", + "100.98.185.9/32", + "fd7a:115c:a1e0::2728:b90a/128", + "fd7a:115c:a1e0::8728:bb48/128" + ], "SrcCaps": null, "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 22, "Last": 22}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 22, "Last": 22}} + ], "Caps": []}, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.98.185.9/32", "fd7a:115c:a1e0::2728:b90a/128"], + "SrcCaps": null, + "Dsts": [ + {"Net": "100.98.133.80/32", "Ports": {"First": 80, "Last": 80}}, + {"Net": "fd7a:115c:a1e0::d428:8551/128", "Ports": {"First": 80, "Last": 80}} + ], + "Caps": [] + }, { + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.100.187.71", + "100.98.185.9", + "fd7a:115c:a1e0::2728:b90a", + "fd7a:115c:a1e0::8728:bb48" + ], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 22, "Last": 22}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 22, "Last": 22}} + ]}, {"SrcIPs": ["100.98.185.9", "fd7a:115c:a1e0::2728:b90a"], "DstPorts": [ + {"IP": "100.98.133.80", "Ports": {"First": 80, "Last": 80}}, + {"IP": "fd7a:115c:a1e0::d428:8551", "Ports": {"First": 80, "Last": 80}} + ]}, { + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, { + "principals": [{"nodeIP": "100.98.185.9"}, {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}], + "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"17847873460602": { + "ID": 17847873460602, + "LoginName": "srv.tail78f774.ts.net", + "DisplayName": "srv" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, {"principals": [ + {"nodeIP": "100.100.187.71"}, + {"nodeIP": "100.98.185.9"}, + {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}, + {"nodeIP": "fd7a:115c:a1e0::8728:bb48"} + ], "sshUsers": {"0": "", "root": "root"}, "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + }}, { + "principals": [{"nodeIP": "100.98.185.9"}, {"nodeIP": "fd7a:115c:a1e0::2728:b90a"}], + "sshUsers": {"0": "", "root": "", "ubuntu": "ubuntu"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "thor-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 7845596747036187, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "Hostinfo": {"Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Tags": ["tag:prod"], + "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": "thor-1", + "ComputedNameWithHost": "thor-1" + }, + "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:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "MachineKey": "mkey:3732617da8302b06ec17218fce16ee9afb08ebdd607e8f0c5a9349638035a72a", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "7845596747036187": { + "ID": 7845596747036187, + "LoginName": "thor-1.tail78f774.ts.net", + "DisplayName": "thor-1" + }} + }, "backend_state": "Running"}} + }, { + "name": "G8", + "at": "2026-10-20T13:12:40.091707936Z", + "note": "last change 2s into the settle", + "result": "observed", + "actions": [{ + "kind": "api", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl/validate", + "header": {"Content-Type": "application/hujson"}, + "body": {"acls": [ + { + "action": "accept", + "dst": ["tag:server:22", "tag:server:22", "10.45.0.0/16:*"], + "src": ["group:eng"] + }, + { + "action": "accept", + "dst": ["tag:server:80"], + "src": ["thor@example.org"] + }, + {"action": "accept", "dst": ["*:*"], "src": ["odin@example.com"]}, + {"action": "accept", "dst": ["group:eng:9100"], "src": ["tag:server"]} + ], "autoApprovers": {"routes": { + "10.44.0.0/16": ["tag:router", "tag:prod"], + "10.45.0.0/16": ["tag:router", "tag:prod"], + "10.55.0.0/16": ["group:eng", "group:eng"] + }}, "grants": [{ + "dst": ["10.44.0.0/16", "10.44.0.0/16", "10.44.1.0/24", "10.45.0.0/16"], + "ip": ["*"], + "src": ["group:eng"], + "via": ["tag:router"] + }], "groups": {"group:eng": ["thor@example.org"]}, "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["group:eng"], + "users": ["root"] + }, { + "action": "accept", + "dst": ["tag:server"], + "src": ["group:eng"], + "users": ["root"] + }, { + "action": "accept", + "dst": ["tag:server"], + "src": ["thor@example.org"], + "users": ["ubuntu"] + }, { + "action": "accept", + "dst": ["autogroup:self"], + "src": ["autogroup:member"], + "users": ["autogroup:nonroot"] + }], "tagOwners": { + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {}, + "offset_ms": 2003 + }, { + "kind": "policy", + "principal": "admin", + "method": "POST", + "path": "/tailnet/-/acl", + "header": {"Content-Type": "application/hujson"}, + "body": {"acls": [ + { + "action": "accept", + "dst": ["tag:server:22", "tag:server:22", "10.45.0.0/16:*"], + "src": ["group:eng"] + }, + { + "action": "accept", + "dst": ["tag:server:80"], + "src": ["thor@example.org"] + }, + {"action": "accept", "dst": ["*:*"], "src": ["odin@example.com"]}, + {"action": "accept", "dst": ["group:eng:9100"], "src": ["tag:server"]} + ], "autoApprovers": {"routes": { + "10.44.0.0/16": ["tag:router", "tag:prod"], + "10.45.0.0/16": ["tag:router", "tag:prod"], + "10.55.0.0/16": ["group:eng", "group:eng"] + }}, "grants": [{ + "dst": ["10.44.0.0/16", "10.44.0.0/16", "10.44.1.0/24", "10.45.0.0/16"], + "ip": ["*"], + "src": ["group:eng"], + "via": ["tag:router"] + }], "groups": {"group:eng": ["thor@example.org"]}, "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["group:eng"], + "users": ["root"] + }, { + "action": "accept", + "dst": ["tag:server"], + "src": ["group:eng"], + "users": ["root"] + }, { + "action": "accept", + "dst": ["tag:server"], + "src": ["thor@example.org"], + "users": ["ubuntu"] + }, { + "action": "accept", + "dst": ["autogroup:self"], + "src": ["autogroup:member"], + "users": ["autogroup:nonroot"] + }], "tagOwners": { + "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": {"acls": [ + { + "action": "accept", + "dst": ["tag:server:22", "tag:server:22", "10.45.0.0/16:*"], + "src": ["group:eng"] + }, + { + "action": "accept", + "dst": ["tag:server:80"], + "src": ["thor@example.org"] + }, + {"action": "accept", "dst": ["*:*"], "src": ["odin@example.com"]}, + {"action": "accept", "dst": ["group:eng:9100"], "src": ["tag:server"]} + ], "autoApprovers": {"routes": { + "10.44.0.0/16": ["tag:router", "tag:prod"], + "10.45.0.0/16": ["tag:router", "tag:prod"], + "10.55.0.0/16": ["group:eng", "group:eng"] + }}, "grants": [{ + "dst": ["10.44.0.0/16", "10.44.0.0/16", "10.44.1.0/24", "10.45.0.0/16"], + "ip": ["*"], + "src": ["group:eng"], + "via": ["tag:router"] + }], "groups": {"group:eng": ["thor@example.org"]}, "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["group:eng"], + "users": ["root"] + }, { + "action": "accept", + "dst": ["tag:server"], + "src": ["group:eng"], + "users": ["root"] + }, { + "action": "accept", + "dst": ["tag:server"], + "src": ["thor@example.org"], + "users": ["ubuntu"] + }, { + "action": "accept", + "dst": ["autogroup:self"], + "src": ["autogroup:member"], + "users": ["autogroup:nonroot"] + }], "tagOwners": { + "tag:prod": ["odin@example.com"], + "tag:router": ["odin@example.com"], + "tag:server": ["odin@example.com"] + }}, + "offset_ms": 2022 + }, {"kind": "wait", "args": ["quiet", "15s"], "offset_ms": 10050}, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/tailnet/-/devices", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"devices": [{ + "addresses": ["100.100.187.71", "fd7a:115c:a1e0::8728:bb48"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:09:02Z", + "expires": "2027-04-18T13:09:02Z", + "hostname": "freya-1", + "id": "{device:freya-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:13:22Z", + "machineKey": "{machine:freya-1}", + "name": "freya-1.tail78f774.ts.net", + "nodeId": "{device:freya-1}", + "nodeKey": "{nodekey:6}", + "oauthClientId": "{key:K-freya-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:c3fea318f84408b5b0f03fca6575efb99db569c8d980842c3203104a1c594cbc", + "updateAvailable": true, + "user": "freya@example.com" + }, { + "addresses": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:29Z", + "expires": "2027-04-18T13:08:29Z", + "hostname": "odin-1", + "id": "{device:odin-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:13:22Z", + "machineKey": "{machine:odin-1}", + "name": "odin-1.tail78f774.ts.net", + "nodeId": "{device:odin-1}", + "nodeKey": "{nodekey:4}", + "oauthClientId": "{key:K-odin-1}", + "os": "linux", + "tailnetLockError": "", + "tailnetLockKey": "nlpub:119e0a4a6425620cbe4c5ce2de44948286861be186adb1fd6dc81801c0340644", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.122.54.90", "fd7a:115c:a1e0::fc28:365b"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:10:10Z", + "expires": "2027-04-18T13:10:10Z", + "hostname": "rt-b", + "id": "{device:rt-b}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:13:22Z", + "machineKey": "{machine:rt-b}", + "name": "rt-b.tail78f774.ts.net", + "nodeId": "{device:rt-b}", + "nodeKey": "{nodekey:8}", + "oauthClientId": "{key:K-rt-b}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:bd4e3c2a19e3a856db3532ff147fd5c2fbd90db3c622c18efd7ba7d8d7de3781", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.91.34.117", "fd7a:115c:a1e0::3d28:2276"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:24Z", + "expires": "2027-04-18T13:08:24Z", + "hostname": "rt-plain", + "id": "{device:rt-plain}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:13:22Z", + "machineKey": "{machine:rt-plain}", + "name": "rt-plain.tail78f774.ts.net", + "nodeId": "{device:rt-plain}", + "nodeKey": "{nodekey:2}", + "oauthClientId": "{key:K-rt-plain}", + "os": "linux", + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:51d1e76a697361ad7854d71460b469f280f58656c3736c6f0ca75de8a018100c", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.94.159.72", "fd7a:115c:a1e0::ad28:9f49"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:26Z", + "expires": "2027-04-18T13:08:26Z", + "hostname": "rt", + "id": "{device:rt}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:13:22Z", + "machineKey": "{machine:rt}", + "name": "rt.tail78f774.ts.net", + "nodeId": "{device:rt}", + "nodeKey": "{nodekey:3}", + "oauthClientId": "{key:K-rt}", + "os": "linux", + "tags": ["tag:router"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:a27dc0ed32d47d53efa6d8b86337d240e55810276e980e861ab3d0405a5c8dbf", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.98.133.80", "fd7a:115c:a1e0::d428:8551"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:22Z", + "expires": "2027-04-18T13:08:22Z", + "hostname": "srv", + "id": "{device:srv}", + "isExternal": false, + "keyExpiryDisabled": true, + "lastSeen": "2026-10-20T13:13:22Z", + "machineKey": "{machine:srv}", + "name": "srv.tail78f774.ts.net", + "nodeId": "{device:srv}", + "nodeKey": "{nodekey:1}", + "oauthClientId": "{key:K-srv}", + "os": "linux", + "tags": ["tag:server"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:1d5ea3ea2f761a531a50c7ede90ceaf7fc2d0cdbdc1bf916ba391807dcabf5cb", + "updateAvailable": true, + "user": "odin@example.com" + }, { + "addresses": ["100.89.52.31", "fd7a:115c:a1e0::28:3420"], + "authorized": true, + "blocksIncomingConnections": false, + "clientVersion": "1.102.5-ERR-BuildInfo", + "connectedToControl": true, + "created": "2026-10-20T13:08:31Z", + "expires": "2027-04-18T13:08:31Z", + "hostname": "thor-1", + "id": "{device:thor-1}", + "isExternal": false, + "keyExpiryDisabled": false, + "lastSeen": "2026-10-20T13:13:22Z", + "machineKey": "{machine:thor-1}", + "name": "thor-1.tail78f774.ts.net", + "nodeId": "{device:thor-1}", + "nodeKey": "{nodekey:5}", + "oauthClientId": "{key:K-thor-1}", + "os": "linux", + "tags": ["tag:prod"], + "tailnetLockError": "", + "tailnetLockKey": "nlpub:550d77d64a67a3d8d847e26682ace8d4418f200bef86997a642e2daa52e3cd54", + "updateAvailable": true, + "user": "thor@example.org" + }]}, + "offset_ms": 42095 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:srv}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 42115 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt-plain}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 42133 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 42150 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:odin-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 42167 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:thor-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": [], "enabledRoutes": []}, + "offset_ms": 42185 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:freya-1}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": {"advertisedRoutes": ["10.55.1.0/24"], "enabledRoutes": ["10.55.1.0/24"]}, + "offset_ms": 42202 + }, { + "kind": "api", + "principal": "admin", + "method": "GET", + "path": "/device/{device:rt-b}/routes", + "status": 200, + "resp_header": {"Content-Type": "application/json"}, + "response": { + "advertisedRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "enabledRoutes": ["10.44.0.0/16", "10.45.0.0/16"] + }, + "offset_ms": 42220 + }], + "captures": {"freya-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128", "10.55.1.0/24"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "Hostinfo": {"Hostname": "freya-1", "RoutableIPs": ["10.55.1.0/24"], "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "PrimaryRoutes": ["10.55.1.0/24"], + "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/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": "freya-1", + "ComputedNameWithHost": "freya-1" + }, + "AllCaps": [ + "default-auto-update", + "https://tailscale.com/cap/file-sharing", + "https://tailscale.com/cap/is-admin", + "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:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "MachineKey": "mkey:6b108c8cff07e52e3488ef526109513c47034303ec9ec990c47de7620360ec49", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.100.187.71"}, {"nodeIP": "fd7a:115c:a1e0::8728:bb48"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.100.187.71"}, {"nodeIP": "fd7a:115c:a1e0::8728:bb48"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "odin-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "Hostinfo": {"Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "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": "odin-1", + "ComputedNameWithHost": "odin-1" + }, + "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:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "MachineKey": "mkey:d4aad92e11b56bf46c865cb54c99273a3f07bb4fea3e7d5109ee329df7c1a67b", + "Peers": [{ + "ID": 6889946307107430, + "StableID": "noRVexCUov11CNTRL", + "Name": "freya-1.tail78f774.ts.net.", + "User": 3982058329734709, + "Key": "nodekey:e3d3d4e574ead8f227921f479505885cd4629a22bce77ac11f1d8b288724bb47", + "KeyExpiry": "2027-04-18T13:09:01Z", + "DiscoKey": "discokey:6634593685cd395e7023c44ff1d092053c4dbd5705f470644a7803c188367033", + "Addresses": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128"], + "AllowedIPs": ["100.100.187.71/32", "fd7a:115c:a1e0::8728:bb48/128", "10.55.1.0/24"], + "Endpoints": [ + "192.0.2.1:50618", + "198.51.100.1:50618", + "198.51.100.2:50618", + "198.51.100.3:50618", + "198.51.100.4:50618", + "198.51.100.5:50618", + "198.51.100.6:50618", + "198.51.100.7:50618" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "freya-1", "Services": [ + {"Proto": "peerapi4", "Port": 39342}, + {"Proto": "peerapi6", "Port": 39342} + ]}, + "Created": "2026-10-20T13:09:01.732312377Z", + "Cap": 142, + "PrimaryRoutes": ["10.55.1.0/24"], + "Online": true, + "ComputedName": "freya-1", + "ComputedNameWithHost": "freya-1" + }, { + "ID": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt", "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt", + "ComputedNameWithHost": "rt" + }, { + "ID": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-b", "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203} + ]}, + "Created": "2026-10-20T13:10:09.555919884Z", + "Cap": 142, + "Tags": ["tag:router"], + "Online": true, + "ComputedName": "rt-b", + "ComputedNameWithHost": "rt-b" + }, { + "ID": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "rt-plain", "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272} + ]}, + "Created": "2026-10-20T13:08:24.46815472Z", + "Cap": 142, + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "Online": true, + "ComputedName": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, { + "ID": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "srv", "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "Cap": 142, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "srv", + "ComputedNameWithHost": "srv" + }, { + "ID": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Cap": 142, + "Tags": ["tag:prod"], + "Online": true, + "ComputedName": "thor-1", + "ComputedNameWithHost": "thor-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "ssh_rules": [{ + "principals": [{"nodeIP": "100.122.74.40"}, {"nodeIP": "fd7a:115c:a1e0::7d28:4a29"}], + "sshUsers": {"*": "=", "0": "", "root": ""}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }], "backend_state": "Running"}, "rt": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 1760694666591341, + "StableID": "nSbKUsTRkE11CNTRL", + "Name": "rt.tail78f774.ts.net.", + "User": 1760694666591341, + "Key": "nodekey:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "DiscoKey": "discokey:0a46f83a30f666110a2e19d2c5effc009b01b7aeb9504b3e19f09fc29e33df0e", + "Addresses": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "AllowedIPs": ["100.94.159.72/32", "fd7a:115c:a1e0::ad28:9f49/128"], + "Endpoints": [ + "192.0.2.1:41418", + "198.51.100.1:41418", + "198.51.100.2:41418", + "198.51.100.3:41418", + "198.51.100.4:41418", + "198.51.100.5:41418", + "198.51.100.6:41418", + "198.51.100.7:41418" + ], + "Hostinfo": {"Hostname": "rt", "RequestTags": ["tag:router"], "Services": [ + {"Proto": "peerapi4", "Port": 34271}, + {"Proto": "peerapi6", "Port": 34271}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:26.465714652Z", + "Tags": ["tag:router"], + "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": "rt", + "ComputedNameWithHost": "rt" + }, + "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:a1aeb9fe9a45618dc60878f1b0bdcaa3824a37b0128db72cb48bf558adde9f48", + "MachineKey": "mkey:aa000d00f3fa1b2efb6d0b135fef18aa40e458ae7f742e8473fca2c587ae5628", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1760694666591341": { + "ID": 1760694666591341, + "LoginName": "rt.tail78f774.ts.net", + "DisplayName": "rt" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "backend_state": "Running"}, "rt-b": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 3000953077253870, + "StableID": "nXR3A2x8SQ11CNTRL", + "Name": "rt-b.tail78f774.ts.net.", + "User": 3000953077253870, + "Key": "nodekey:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "DiscoKey": "discokey:1f758fc7d22aa6d698f7c3a200d012741db6eb8c37fd9465ab517d51f3b0bd68", + "Addresses": ["100.122.54.90/32", "fd7a:115c:a1e0::fc28:365b/128"], + "AllowedIPs": [ + "100.122.54.90/32", + "fd7a:115c:a1e0::fc28:365b/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:32984", + "198.51.100.1:32984", + "198.51.100.2:32984", + "198.51.100.3:32984", + "198.51.100.4:32984", + "198.51.100.5:32984", + "198.51.100.6:32984", + "198.51.100.7:32984" + ], + "Hostinfo": { + "Hostname": "rt-b", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:router"], + "Services": [ + {"Proto": "peerapi4", "Port": 40203}, + {"Proto": "peerapi6", "Port": 40203}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:10:09.555919884Z", + "Tags": ["tag:router"], + "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": "rt-b", + "ComputedNameWithHost": "rt-b" + }, + "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:cb202bf03a475f83a09b2a08a33548e7a704e3300bc9ddf1860dffb0fc7a365a", + "MachineKey": "mkey:ca577c6ff6ff24a55ec3a1c16049bab9ff4c37911d63424a3971ef438c5d051e", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3000953077253870": { + "ID": 3000953077253870, + "LoginName": "rt-b.tail78f774.ts.net", + "DisplayName": "rt-b" + }, "3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "rt-plain": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 4044323459478186, + "StableID": "nRUny7XgaY11CNTRL", + "Name": "rt-plain.tail78f774.ts.net.", + "User": 4044323459478186, + "Key": "nodekey:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "DiscoKey": "discokey:972723c66ddd639acbe686865d56f030272ae1d54fc630b00074b0d75c790055", + "Addresses": ["100.91.34.117/32", "fd7a:115c:a1e0::3d28:2276/128"], + "AllowedIPs": [ + "100.91.34.117/32", + "fd7a:115c:a1e0::3d28:2276/128", + "10.44.0.0/16", + "10.45.0.0/16" + ], + "Endpoints": [ + "192.0.2.1:34876", + "198.51.100.1:34876", + "198.51.100.2:34876", + "198.51.100.3:34876", + "198.51.100.4:34876", + "198.51.100.5:34876", + "198.51.100.6:34876", + "198.51.100.7:34876" + ], + "Hostinfo": { + "Hostname": "rt-plain", + "RoutableIPs": ["10.44.0.0/16", "10.45.0.0/16"], + "RequestTags": ["tag:prod"], + "Services": [ + {"Proto": "peerapi4", "Port": 56272}, + {"Proto": "peerapi6", "Port": 56272}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ] + }, + "Created": "2026-10-20T13:08:24.46815472Z", + "Tags": ["tag:prod"], + "PrimaryRoutes": ["10.44.0.0/16", "10.45.0.0/16"], + "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": "rt-plain", + "ComputedNameWithHost": "rt-plain" + }, + "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:80d5947b29ed33d25bac9bc0f445b4a7297d28c1452d2b2ede754aec3ddb2275", + "MachineKey": "mkey:a90b7e809297543eeee90dec3ddc268d8353130b3c27a1984b5d5c336eb4eb56", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3982058329734709": { + "ID": 3982058329734709, + "LoginName": "freya@example.com", + "DisplayName": "freya" + }, "4044323459478186": { + "ID": 4044323459478186, + "LoginName": "rt-plain.tail78f774.ts.net", + "DisplayName": "rt-plain" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4538565228176803": { + "ID": 4538565228176803, + "LoginName": "thor@example.org", + "DisplayName": "thor" + }} + }, "backend_state": "Running"}, "srv": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 17847873460602, + "StableID": "nHGiTLq59111CNTRL", + "Name": "srv.tail78f774.ts.net.", + "User": 17847873460602, + "Key": "nodekey:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "DiscoKey": "discokey:91783f295fed051eb5c6aef7b3e173e8dd94eb0236525b717a27582ef8945e3b", + "Addresses": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "AllowedIPs": ["100.98.133.80/32", "fd7a:115c:a1e0::d428:8551/128"], + "Endpoints": [ + "192.0.2.1:55130", + "198.51.100.1:55130", + "198.51.100.2:55130", + "198.51.100.3:55130", + "198.51.100.4:55130", + "198.51.100.5:55130", + "198.51.100.6:55130", + "198.51.100.7:55130" + ], + "Hostinfo": {"Hostname": "srv", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 64422}, + {"Proto": "peerapi6", "Port": 64422}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:22.456933194Z", + "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": "srv", + "ComputedNameWithHost": "srv" + }, + "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:581f1dba76bce1e371f62c1bd7da35ee8e6a9a9a5cad08b45c4094b1d4e28550", + "MachineKey": "mkey:09821ae2a092955011cac786562b0659d1f7723cc7689ecdeceadd255e311032", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"17847873460602": { + "ID": 17847873460602, + "LoginName": "srv.tail78f774.ts.net", + "DisplayName": "srv" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, "backend_state": "Running"}, "thor-1": {"packet_filter_rules": [{ + "SrcIPs": ["100.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], "packet_filter_matches": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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": 7845596747036187, + "StableID": "nQuzYKXHG421CNTRL", + "Name": "thor-1.tail78f774.ts.net.", + "User": 7845596747036187, + "Key": "nodekey:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "KeyExpiry": "2027-04-18T13:08:30Z", + "DiscoKey": "discokey:d289d8c6263941af4ef92844d274dcb6afe4268c9d447a69eae5062babb4f031", + "Addresses": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "AllowedIPs": ["100.89.52.31/32", "fd7a:115c:a1e0::28:3420/128"], + "Endpoints": [ + "192.0.2.1:58494", + "198.51.100.1:58494", + "198.51.100.2:58494", + "198.51.100.3:58494", + "198.51.100.4:58494", + "198.51.100.5:58494", + "198.51.100.6:58494", + "198.51.100.7:58494" + ], + "Hostinfo": {"Hostname": "thor-1", "Services": [ + {"Proto": "peerapi4", "Port": 45615}, + {"Proto": "peerapi6", "Port": 45615}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-20T13:08:30.546729218Z", + "Tags": ["tag:prod"], + "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": "thor-1", + "ComputedNameWithHost": "thor-1" + }, + "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:75002d8e476d23ee5bfc75f747658976ac27ec5ba4f993136d331fc20019341f", + "MachineKey": "mkey:3732617da8302b06ec17218fce16ee9afb08ebdd607e8f0c5a9349638035a72a", + "Peers": [{ + "ID": 8596560588312866, + "StableID": "nD8je25Q8A21CNTRL", + "Name": "odin-1.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ab3dc883db695cf51033d2cbc27bbfa32f34c7de616fa3a7f30dc9e87dfa4a28", + "KeyExpiry": "2027-04-18T13:08:28Z", + "DiscoKey": "discokey:b825c76e31809487567a081abac35f8f87063dd59e776653b94c9b9b40a8a970", + "Addresses": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "AllowedIPs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "Endpoints": [ + "192.0.2.1:52386", + "198.51.100.1:52386", + "198.51.100.2:52386", + "198.51.100.3:52386", + "198.51.100.4:52386", + "198.51.100.5:52386", + "198.51.100.6:52386", + "198.51.100.7:52386" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "odin-1", "Services": [ + {"Proto": "peerapi4", "Port": 48097}, + {"Proto": "peerapi6", "Port": 48097} + ]}, + "Created": "2026-10-20T13:08:28.590291442Z", + "Cap": 142, + "Online": true, + "ComputedName": "odin-1", + "ComputedNameWithHost": "odin-1" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{ + "IPProto": [6, 17, 1, 58], + "Srcs": ["100.122.74.40/32", "fd7a:115c:a1e0::7d28:4a29/128"], + "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.122.74.40", "fd7a:115c:a1e0::7d28:4a29"], + "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}] + }], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": null, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "7845596747036187": { + "ID": 7845596747036187, + "LoginName": "thor-1.tail78f774.ts.net", + "DisplayName": "thor-1" + }} + }, "backend_state": "Running"}} + }] +} diff --git a/hscontrol/servertest/via_compat_test.go b/hscontrol/servertest/via_compat_test.go index 9729bc191..f698d4d92 100644 --- a/hscontrol/servertest/via_compat_test.go +++ b/hscontrol/servertest/via_compat_test.go @@ -114,10 +114,8 @@ var viaCompatSkipReasons = map[string]string{ "via-grant-v67/rename/blastoise/packet-filter": viaSourceLossNotSent, "via-grant-v67/rename/ivysaur/peers": viaSourceLossNotSent, - // Adjacent member addresses merge into one prefix, and the reduced - // filter keeps all of it; SaaS lists only the node's own address. - "routes-f2-subnet-as-acl-source/ivysaur/packet-filter": "FILTER_DST_MERGED: own filter names a neighbour's address", - "routes-f2-subnet-as-acl-source/venusaur/packet-filter": "FILTER_DST_MERGED: own filter names a neighbour's address", + "routes-f2-subnet-as-acl-source/ivysaur/packet-filter": filterDstMerged, + "routes-f2-subnet-as-acl-source/venusaur/packet-filter": filterDstMerged, // SaaS sends a router every approved route in its own AllowedIPs and // every route it is primary for in PrimaryRoutes. @@ -269,6 +267,10 @@ const viaSourceLossNotSent = "VIA_SOURCE_LOSS_NOT_SENT: a user change that leave const exitRoutesOnOverlap = "EXIT_ROUTES_ON_OVERLAP: headscale offers a peer's exit routes to a viewer whose rules reach only nodes or subnets; SaaS leaves them out" +// Adjacent member addresses merge into one prefix, and the reduced filter +// keeps all of it; SaaS lists only the node's own address. +const filterDstMerged = "FILTER_DST_MERGED: own filter names a neighbour's address" + const sameUserPeers = "SAME_USER_PEERS: SaaS lists a user's own devices as each other's peers with no rule linking them; headscale peers only what the policy links" const selfRoutesReduced = "SELF_ROUTES_REDUCED: headscale sends a router only the primary routes its policy lets it reach" diff --git a/hscontrol/servertest/via_ha_compat_test.go b/hscontrol/servertest/via_ha_compat_test.go index 72500ec65..e32c06dc8 100644 --- a/hscontrol/servertest/via_ha_compat_test.go +++ b/hscontrol/servertest/via_ha_compat_test.go @@ -1078,6 +1078,10 @@ func (r *stepReplay) api(t *testing.T, stepName string, i int, a testcapture.Act // Headscale reads DNS from its config, which a consumer sets from // the capture's input; it has no API to change it. + case a.Method == http.MethodPost && a.Path == "/tailnet/-/acl/validate": + // A validation changes nothing, and headscale's v2 API has none; + // TestAPIv2ACLCompat in .. lists that difference. + case a.Method == http.MethodPost && a.Path == "/tailnet/-/acl": require.Equal(t, http.StatusOK, a.Status, "%s: replay of a refused policy", stepName) r.setPolicy(t, stepName, string(a.Body))