From 998c4b061967a01f77a4f33594639b0df1dd6e20 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Thu, 29 Oct 2026 09:31:18 +0000 Subject: [PATCH] policy: pin SSH forwarding behavior and recommend upgrades --- .gitignore | 2 +- CHANGELOG.md | 16 + .../v2/tailscale_ssh_data_compat_test.go | 62 + .../ssh-forwarding-accept-agent.hujson | 1977 ++++++++++++++++ .../ssh-forwarding-accept-default.hujson | 2001 +++++++++++++++++ .../ssh-forwarding-accept-local.hujson | 1985 ++++++++++++++++ .../ssh-forwarding-accept-remote.hujson | 1985 ++++++++++++++++ .../ssh-forwarding-check-agent.hujson | 1985 ++++++++++++++++ .../ssh-forwarding-check-default.hujson | 1995 ++++++++++++++++ .../ssh-forwarding-check-local.hujson | 1985 ++++++++++++++++ .../ssh-forwarding-check-remote.hujson | 1985 ++++++++++++++++ 11 files changed, 15977 insertions(+), 1 deletion(-) create mode 100644 hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-agent.hujson create mode 100644 hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-default.hujson create mode 100644 hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-local.hujson create mode 100644 hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-remote.hujson create mode 100644 hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-agent.hujson create mode 100644 hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-default.hujson create mode 100644 hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-local.hujson create mode 100644 hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-remote.hujson diff --git a/.gitignore b/.gitignore index 9f72ef80a..d924cb757 100644 --- a/.gitignore +++ b/.gitignore @@ -29,7 +29,7 @@ config*.yaml !config-example.yaml derp.yaml *.hujson -!hscontrol/policy/v2/testdata/*/*.hujson +!hscontrol/policy/v2/testdata/**/*.hujson *.key /db.sqlite *.sqlite3 diff --git a/CHANGELOG.md b/CHANGELOG.md index aeaee9a01..99a61c359 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -150,6 +150,22 @@ the ACME DNS-01 challenge through a built-in DNS provider: `acmedns`, - Deleting an ephemeral node no longer logs a spurious `ephemeral node deletion failed` error later [#3575](https://github.com/juanfont/headscale/pull/3575) - Add the v2 `acl/validate` endpoint, which Terraform provider 0.29.3 and newer call to check `tailscale_acl` at plan time; before it, those releases failed with `invalid character 'p' after top-level value` +## 0.29.7 (202x-xx-xx) + +### Security + +We recommend that all users upgrade to Headscale 0.29.7 and Tailscale v1.104.4 or newer, +especially those using Tailscale SSH. Tailscale v1.104.4 fixes vulnerabilities in SSH +forwarding, SSH session handling and Serve. These fixes run in `tailscaled` on your +nodes; upgrading Headscale alone does not apply them. See Tailscale's +[security bulletins](https://tailscale.com/security-bulletins#ts-2026-014) and +[Tailscale SSH: Findings and fixes](https://tailscale.com/blog/tailscale-ssh-findings-fixes). + +Headscale follows Tailscale's SSH policy behavior: forwarding is allowed by default, +with no per-rule forwarding controls. As an interim mitigation for SSH forwarding +vulnerabilities, set `TS_SSH_DISABLE_FORWARDING=1` in the destination `tailscaled` +service environment and restart the service, as described in the security bulletin. + ## 0.29.6 (2026-10-24) **Minimum supported Tailscale client version: v1.80.0** diff --git a/hscontrol/policy/v2/tailscale_ssh_data_compat_test.go b/hscontrol/policy/v2/tailscale_ssh_data_compat_test.go index 79fc9b1a2..3e7f8f8a0 100644 --- a/hscontrol/policy/v2/tailscale_ssh_data_compat_test.go +++ b/hscontrol/policy/v2/tailscale_ssh_data_compat_test.go @@ -58,6 +58,68 @@ func loadSSHTestFile(t *testing.T, path string) *testcapture.Capture { return c } +// TestSSHForwardingDataCompat pins upstream forwarding actions and rejects +// unsupported policy fields. The complete captures retain SSHUsers, but its new +// numeric-user deny entry needs separate user-mapping compatibility coverage. +func TestSSHForwardingDataCompat(t *testing.T) { + t.Parallel() + + files, err := filepath.Glob(filepath.Join("testdata", "ssh_results", "forwarding", "ssh-*.hujson")) + require.NoError(t, err) + require.NotEmpty(t, files) + + users := setupSSHDataCompatUsers() + + for _, file := range files { + tf := loadSSHTestFile(t, file) + + t.Run(tf.TestID, func(t *testing.T) { + t.Parallel() + + require.Empty(t, tf.CaptureError) + require.NotEmpty(t, tf.Captures) + + pol, err := unmarshalPolicy([]byte(tf.Input.FullPolicy)) + if tf.Input.APIResponseCode != 200 { + require.Equal(t, 400, tf.Input.APIResponseCode) + require.NotNil(t, tf.Input.APIResponseBody) + field, ok := strings.CutPrefix(tf.Input.APIResponseBody.Message, "json: unknown field ") + require.True(t, ok, "expected an upstream unknown-field rejection") + require.ErrorIs(t, err, ErrUnknownField) + require.ErrorContains(t, err, fmt.Sprintf("%s: %s", ErrUnknownField, field)) + + return + } + + require.NoError(t, err) + + nodes := buildGrantsNodesFromCapture(users, tf) + + for nodeName, capture := range tf.Captures { + t.Run(nodeName, func(t *testing.T) { + node := findNodeByGivenName(nodes, nodeName) + require.NotNil(t, node) + + got, err := pol.compileSSHPolicy("https://unused", users, node.View(), nodes.ViewSlice()) + require.NoError(t, err) + + var rules []*tailcfg.SSHRule + if got != nil { + rules = got.Rules + } + + require.Len(t, rules, len(capture.SSHRules)) + + for i, want := range capture.SSHRules { + require.NotNil(t, want.Action) + assert.Equal(t, want.Action, rules[i].Action) + } + }) + } + }) + } +} + // sshSkipReasons documents captures the upstream control plane accepts // but headscale cannot yet represent. Each entry names the feature gap. var sshSkipReasons = map[string]string{ diff --git a/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-agent.hujson b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-agent.hujson new file mode 100644 index 000000000..d6a8cf4b4 --- /dev/null +++ b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-agent.hujson @@ -0,0 +1,1977 @@ +// ssh-forwarding-accept-agent +// +// Upstream accept SSH forwarding: allowAgentForwarding=false (Tailscale 1.104.4; explicit root user) +// +// Nodes with filter rules: 2 of 2 +// Captured at: 2026-10-29T09:22:28Z +// tool version: tscap/dev +// schema version: 1 +{ + "schema_version": 1, + "test_id": "ssh-forwarding-accept-agent", + "description": "Upstream accept SSH forwarding: allowAgentForwarding=false (Tailscale 1.104.4; explicit root user)", + "category": "ssh", + "captured_at": "2026-10-29T09:22:28.248164227Z", + "tool_version": "tscap/dev", + "tailnet": "odin@example.com", + "error": true, + "input": { + "api_response_code": 400, + "api_response_body": {"message": "json: unknown field \"allowAgentForwarding\""}, + "tailnet": { + "dns": {"magic_dns": false, "nameservers": [], "search_paths": [], "split_dns": {}}, + "settings": {} + }, + "scenario_hujson": "{\n \"id\": \"ssh-forwarding-accept-agent\",\n \"category\": \"ssh\",\n \"description\": \"Upstream accept SSH forwarding: allowAgentForwarding=false (Tailscale 1.104.4; explicit root user)\",\n \"topology\": {\n \"users\": [\n {\n \"id\": 1,\n \"name\": \"odin\",\n \"email\": \"odin@example.com\"\n }\n ],\n \"nodes\": {\n \"bulbasaur\": {\n \"hostname\": \"bulbasaur\",\n \"user\": \"odin\",\n \"tags\": [],\n \"routable_ips\": [],\n \"approved_routes\": []\n },\n \"beedrill\": {\n \"hostname\": \"beedrill\",\n \"tags\": [\n \"tag:server\"\n ],\n \"routable_ips\": [],\n \"approved_routes\": []\n }\n }\n },\n \"tailnet\": {\n \"dns\": {\n \"magic_dns\": false,\n \"nameservers\": [],\n \"search_paths\": [],\n \"split_dns\": {}\n },\n \"settings\": {}\n },\n \"policy\": {\n \"grants\": [\n {\n \"src\": [\n \"*\"\n ],\n \"dst\": [\n \"*\"\n ],\n \"ip\": [\n \"*\"\n ]\n }\n ],\n \"tagOwners\": {\n \"tag:server\": [\n \"odin@example.com\"\n ]\n },\n \"ssh\": [\n {\n \"action\": \"accept\",\n \"src\": [\n \"autogroup:member\"\n ],\n \"dst\": [\n \"tag:server\"\n ],\n \"users\": [\n \"root\"\n ],\n \"allowAgentForwarding\": false\n }\n ]\n },\n \"options\": {\n \"expect_api_error\": true\n }\n}\n", + "scenario_path": "scenarios/ssh-forwarding/ssh-forwarding-accept-agent.hujson", + "full_policy": {"grants": [{"dst": ["*"], "ip": ["*"], "src": ["*"]}], "ssh": [{ + "action": "accept", + "allowAgentForwarding": false, + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": {"tag:server": ["odin@example.com"]}} + }, + "topology": { + "users": [{"id": 1, "name": "odin", "email": "odin@example.com"}], + "nodes": {"beedrill": { + "hostname": "beedrill", + "tags": ["tag:server"], + "ipv4": "100.111.162.33", + "ipv6": "fd7a:115c:a1e0::ae28:a222", + "routable_ips": [], + "approved_routes": [] + }, "bulbasaur": { + "hostname": "bulbasaur", + "tags": [], + "ipv4": "100.76.26.12", + "ipv6": "fd7a:115c:a1e0::ae28:1a0d", + "user": "odin", + "routable_ips": [], + "approved_routes": [] + }} + }, + "captures": {"beedrill": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 3191696349729125, + "StableID": "nrVYy9TXvR11CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 3191696349729125, + "Key": "nodekey:d7c67cf1a97a758fb59597c37fc18a3d452ff7b4113f8a0e9470aef8aeefa221", + "DiscoKey": "discokey:cdb27dc2a3b4ec865e1c437d5a0934386593cad7abe7db9001edc7d9d126f155", + "Addresses": ["100.111.162.33/32", "fd7a:115c:a1e0::ae28:a222/128"], + "AllowedIPs": ["100.111.162.33/32", "fd7a:115c:a1e0::ae28:a222/128"], + "Endpoints": [ + "77.164.248.136:37688", + "10.65.0.27:37688", + "172.17.0.1:37688", + "172.18.0.1:37688", + "172.19.0.1:37688" + ], + "Hostinfo": {"Hostname": "beedrill", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 39738}, + {"Proto": "peerapi6", "Port": 39738}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:22:30.292734927Z", + "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": "beedrill", + "ComputedNameWithHost": "beedrill" + }, + "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:d7c67cf1a97a758fb59597c37fc18a3d452ff7b4113f8a0e9470aef8aeefa221", + "MachineKey": "mkey:01e8b473ab28b75052c7e68776639a285bbf1dc8ca9569f8d8e799bbe9f29730", + "Peers": [{ + "ID": 7195315227111390, + "StableID": "nRCPRLjmBy11CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:58ed92248e09820318e0054e96ccea55843fab290001673f4248b291ae4c1a0c", + "KeyExpiry": "2027-04-27T09:22:31Z", + "DiscoKey": "discokey:e1e66f71fe202f58287c57721a8e2a88d4483c9db5a6562087a161deb2ff0313", + "Addresses": ["100.76.26.12/32", "fd7a:115c:a1e0::ae28:1a0d/128"], + "AllowedIPs": ["100.76.26.12/32", "fd7a:115c:a1e0::ae28:1a0d/128"], + "Endpoints": [ + "77.164.248.136:34036", + "10.65.0.27:34036", + "172.17.0.1:34036", + "172.18.0.1:34036", + "172.19.0.1:34036" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 39750}, + {"Proto": "peerapi6", "Port": 39750} + ]}, + "Created": "2026-10-29T09:22:31.100557071Z", + "Cap": 148, + "Online": true, + "ComputedName": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3191696349729125": { + "ID": 3191696349729125, + "LoginName": "beedrill.tail78f774.ts.net", + "DisplayName": "beedrill" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + } + }, "bulbasaur": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 7195315227111390, + "StableID": "nRCPRLjmBy11CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:58ed92248e09820318e0054e96ccea55843fab290001673f4248b291ae4c1a0c", + "KeyExpiry": "2027-04-27T09:22:31Z", + "DiscoKey": "discokey:e1e66f71fe202f58287c57721a8e2a88d4483c9db5a6562087a161deb2ff0313", + "Addresses": ["100.76.26.12/32", "fd7a:115c:a1e0::ae28:1a0d/128"], + "AllowedIPs": ["100.76.26.12/32", "fd7a:115c:a1e0::ae28:1a0d/128"], + "Hostinfo": { + "Hostname": "bulbasaur", + "Services": [{"Proto": "peerapi-dns-proxy", "Port": 1}] + }, + "Created": "2026-10-29T09:22:31.100557071Z", + "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": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }, + "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:58ed92248e09820318e0054e96ccea55843fab290001673f4248b291ae4c1a0c", + "MachineKey": "mkey:b2fc5b6bb23ba7df9f5e4d9e2106f01ce5081f27ba40cf33cb006343e7fab22c", + "Peers": [{ + "ID": 3191696349729125, + "StableID": "nrVYy9TXvR11CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:d7c67cf1a97a758fb59597c37fc18a3d452ff7b4113f8a0e9470aef8aeefa221", + "DiscoKey": "discokey:cdb27dc2a3b4ec865e1c437d5a0934386593cad7abe7db9001edc7d9d126f155", + "Addresses": ["100.111.162.33/32", "fd7a:115c:a1e0::ae28:a222/128"], + "AllowedIPs": ["100.111.162.33/32", "fd7a:115c:a1e0::ae28:a222/128"], + "Endpoints": [ + "77.164.248.136:37688", + "10.65.0.27:37688", + "172.17.0.1:37688", + "172.18.0.1:37688", + "172.19.0.1:37688" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "beedrill", "Services": [ + {"Proto": "peerapi4", "Port": 39738}, + {"Proto": "peerapi6", "Port": 39738} + ]}, + "Created": "2026-10-29T09:22:30.292734927Z", + "Cap": 148, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "beedrill", + "ComputedNameWithHost": "beedrill" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + } + }} +} diff --git a/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-default.hujson b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-default.hujson new file mode 100644 index 000000000..70daa412c --- /dev/null +++ b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-default.hujson @@ -0,0 +1,2001 @@ +// ssh-forwarding-accept-default +// +// Upstream accept SSH forwarding: omitted forwarding fields (Tailscale 1.104.4; explicit root user) +// +// Nodes with filter rules: 2 of 2 +// Captured at: 2026-10-29T09:22:36Z +// tool version: tscap/dev +// schema version: 1 +{ + "schema_version": 1, + "test_id": "ssh-forwarding-accept-default", + "description": "Upstream accept SSH forwarding: omitted forwarding fields (Tailscale 1.104.4; explicit root user)", + "category": "ssh", + "captured_at": "2026-10-29T09:22:36.626790596Z", + "tool_version": "tscap/dev", + "tailnet": "odin@example.com", + "input": { + "api_response_code": 200, + "tailnet": { + "dns": {"magic_dns": false, "nameservers": [], "search_paths": [], "split_dns": {}}, + "settings": {} + }, + "scenario_hujson": "{\n \"id\": \"ssh-forwarding-accept-default\",\n \"category\": \"ssh\",\n \"description\": \"Upstream accept SSH forwarding: omitted forwarding fields (Tailscale 1.104.4; explicit root user)\",\n \"topology\": {\n \"users\": [\n {\n \"id\": 1,\n \"name\": \"odin\",\n \"email\": \"odin@example.com\"\n }\n ],\n \"nodes\": {\n \"bulbasaur\": {\n \"hostname\": \"bulbasaur\",\n \"user\": \"odin\",\n \"tags\": [],\n \"routable_ips\": [],\n \"approved_routes\": []\n },\n \"beedrill\": {\n \"hostname\": \"beedrill\",\n \"tags\": [\n \"tag:server\"\n ],\n \"routable_ips\": [],\n \"approved_routes\": []\n }\n }\n },\n \"tailnet\": {\n \"dns\": {\n \"magic_dns\": false,\n \"nameservers\": [],\n \"search_paths\": [],\n \"split_dns\": {}\n },\n \"settings\": {}\n },\n \"policy\": {\n \"grants\": [\n {\n \"src\": [\n \"*\"\n ],\n \"dst\": [\n \"*\"\n ],\n \"ip\": [\n \"*\"\n ]\n }\n ],\n \"tagOwners\": {\n \"tag:server\": [\n \"odin@example.com\"\n ]\n },\n \"ssh\": [\n {\n \"action\": \"accept\",\n \"src\": [\n \"autogroup:member\"\n ],\n \"dst\": [\n \"tag:server\"\n ],\n \"users\": [\n \"root\"\n ]\n }\n ]\n },\n \"options\": {\n \"expect_api_error\": false\n }\n}\n", + "scenario_path": "scenarios/ssh-forwarding/ssh-forwarding-accept-default.hujson", + "full_policy": {"grants": [{"dst": ["*"], "ip": ["*"], "src": ["*"]}], "ssh": [{ + "action": "accept", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": {"tag:server": ["odin@example.com"]}} + }, + "topology": { + "users": [{"id": 1, "name": "odin", "email": "odin@example.com"}], + "nodes": {"beedrill": { + "hostname": "beedrill", + "tags": ["tag:server"], + "ipv4": "100.124.44.28", + "ipv6": "fd7a:115c:a1e0::9728:2c1d", + "routable_ips": [], + "approved_routes": [] + }, "bulbasaur": { + "hostname": "bulbasaur", + "tags": [], + "ipv4": "100.105.208.55", + "ipv6": "fd7a:115c:a1e0::a028:d038", + "user": "odin", + "routable_ips": [], + "approved_routes": [] + }} + }, + "captures": {"beedrill": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 7518925728804561, + "StableID": "nN1aJtRLi121CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 7518925728804561, + "Key": "nodekey:b025afdbc104612334c87dfce7fb47883ec447c6fc5b18f0743131a297bc2c1c", + "DiscoKey": "discokey:1a5e1e3cf054c2a38558bf118caf08cd7ee6111b7f4d235a018041a3595d5576", + "Addresses": ["100.124.44.28/32", "fd7a:115c:a1e0::9728:2c1d/128"], + "AllowedIPs": ["100.124.44.28/32", "fd7a:115c:a1e0::9728:2c1d/128"], + "Endpoints": [ + "77.164.248.136:40343", + "10.65.0.27:40343", + "172.17.0.1:40343", + "172.18.0.1:40343", + "172.19.0.1:40343" + ], + "Hostinfo": {"Hostname": "beedrill", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 65479}, + {"Proto": "peerapi6", "Port": 65479}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:22:38.047257919Z", + "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": "beedrill", + "ComputedNameWithHost": "beedrill" + }, + "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:b025afdbc104612334c87dfce7fb47883ec447c6fc5b18f0743131a297bc2c1c", + "MachineKey": "mkey:820a3b1ef0dbac301c088875652c6dce5d5d2319a52f9a72c0720251df5e1900", + "Peers": [{ + "ID": 242384670096433, + "StableID": "nQamHz2nt211CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:fd45f7a98b502d522f0dd0ce657b54922eedbb7b4af15c412d6e5165a029d037", + "KeyExpiry": "2027-04-27T09:22:38Z", + "DiscoKey": "discokey:6152687d07029add0339d084d1313f9cd83e17f4763b14ed6448ccf3fcdd3651", + "Addresses": ["100.105.208.55/32", "fd7a:115c:a1e0::a028:d038/128"], + "AllowedIPs": ["100.105.208.55/32", "fd7a:115c:a1e0::a028:d038/128"], + "Endpoints": [ + "77.164.248.136:54157", + "10.65.0.27:54157", + "172.17.0.1:54157", + "172.18.0.1:54157", + "172.19.0.1:54157" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 51629}, + {"Proto": "peerapi6", "Port": 51629} + ]}, + "Created": "2026-10-29T09:22:38.610821073Z", + "Cap": 148, + "Online": true, + "ComputedName": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.105.208.55"}, {"nodeIP": "fd7a:115c:a1e0::a028:d038"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }]}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "7518925728804561": { + "ID": 7518925728804561, + "LoginName": "beedrill.tail78f774.ts.net", + "DisplayName": "beedrill" + }} + }, + "ssh_rules": [{ + "principals": [{"nodeIP": "100.105.208.55"}, {"nodeIP": "fd7a:115c:a1e0::a028:d038"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "accept": true, + "allowAgentForwarding": true, + "allowLocalPortForwarding": true, + "allowRemotePortForwarding": true + } + }] + }, "bulbasaur": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 242384670096433, + "StableID": "nQamHz2nt211CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:fd45f7a98b502d522f0dd0ce657b54922eedbb7b4af15c412d6e5165a029d037", + "KeyExpiry": "2027-04-27T09:22:38Z", + "DiscoKey": "discokey:6152687d07029add0339d084d1313f9cd83e17f4763b14ed6448ccf3fcdd3651", + "Addresses": ["100.105.208.55/32", "fd7a:115c:a1e0::a028:d038/128"], + "AllowedIPs": ["100.105.208.55/32", "fd7a:115c:a1e0::a028:d038/128"], + "Endpoints": [ + "77.164.248.136:54157", + "10.65.0.27:54157", + "172.17.0.1:54157", + "172.18.0.1:54157", + "172.19.0.1:54157" + ], + "Hostinfo": {"Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 51629}, + {"Proto": "peerapi6", "Port": 51629}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:22:38.610821073Z", + "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": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }, + "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:fd45f7a98b502d522f0dd0ce657b54922eedbb7b4af15c412d6e5165a029d037", + "MachineKey": "mkey:0b4ca741013c0feb35e0dcfe77c4c601b7b524db9799409e9954d4f3aa8e4f5c", + "Peers": [{ + "ID": 7518925728804561, + "StableID": "nN1aJtRLi121CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:b025afdbc104612334c87dfce7fb47883ec447c6fc5b18f0743131a297bc2c1c", + "DiscoKey": "discokey:1a5e1e3cf054c2a38558bf118caf08cd7ee6111b7f4d235a018041a3595d5576", + "Addresses": ["100.124.44.28/32", "fd7a:115c:a1e0::9728:2c1d/128"], + "AllowedIPs": ["100.124.44.28/32", "fd7a:115c:a1e0::9728:2c1d/128"], + "Endpoints": [ + "77.164.248.136:40343", + "10.65.0.27:40343", + "172.17.0.1:40343", + "172.18.0.1:40343", + "172.19.0.1:40343" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "beedrill", "Services": [ + {"Proto": "peerapi4", "Port": 65479}, + {"Proto": "peerapi6", "Port": 65479} + ]}, + "Created": "2026-10-29T09:22:38.047257919Z", + "Cap": 148, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "beedrill", + "ComputedNameWithHost": "beedrill" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + } + }} +} diff --git a/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-local.hujson b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-local.hujson new file mode 100644 index 000000000..8b3cff4c8 --- /dev/null +++ b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-local.hujson @@ -0,0 +1,1985 @@ +// ssh-forwarding-accept-local +// +// Upstream accept SSH forwarding: allowLocalPortForwarding=false (Tailscale 1.104.4; explicit root user) +// +// Nodes with filter rules: 2 of 2 +// Captured at: 2026-10-29T09:22:53Z +// tool version: tscap/dev +// schema version: 1 +{ + "schema_version": 1, + "test_id": "ssh-forwarding-accept-local", + "description": "Upstream accept SSH forwarding: allowLocalPortForwarding=false (Tailscale 1.104.4; explicit root user)", + "category": "ssh", + "captured_at": "2026-10-29T09:22:53.213235772Z", + "tool_version": "tscap/dev", + "tailnet": "odin@example.com", + "error": true, + "input": { + "api_response_code": 400, + "api_response_body": {"message": "json: unknown field \"allowLocalPortForwarding\""}, + "tailnet": { + "dns": {"magic_dns": false, "nameservers": [], "search_paths": [], "split_dns": {}}, + "settings": {} + }, + "scenario_hujson": "{\n \"id\": \"ssh-forwarding-accept-local\",\n \"category\": \"ssh\",\n \"description\": \"Upstream accept SSH forwarding: allowLocalPortForwarding=false (Tailscale 1.104.4; explicit root user)\",\n \"topology\": {\n \"users\": [\n {\n \"id\": 1,\n \"name\": \"odin\",\n \"email\": \"odin@example.com\"\n }\n ],\n \"nodes\": {\n \"bulbasaur\": {\n \"hostname\": \"bulbasaur\",\n \"user\": \"odin\",\n \"tags\": [],\n \"routable_ips\": [],\n \"approved_routes\": []\n },\n \"beedrill\": {\n \"hostname\": \"beedrill\",\n \"tags\": [\n \"tag:server\"\n ],\n \"routable_ips\": [],\n \"approved_routes\": []\n }\n }\n },\n \"tailnet\": {\n \"dns\": {\n \"magic_dns\": false,\n \"nameservers\": [],\n \"search_paths\": [],\n \"split_dns\": {}\n },\n \"settings\": {}\n },\n \"policy\": {\n \"grants\": [\n {\n \"src\": [\n \"*\"\n ],\n \"dst\": [\n \"*\"\n ],\n \"ip\": [\n \"*\"\n ]\n }\n ],\n \"tagOwners\": {\n \"tag:server\": [\n \"odin@example.com\"\n ]\n },\n \"ssh\": [\n {\n \"action\": \"accept\",\n \"src\": [\n \"autogroup:member\"\n ],\n \"dst\": [\n \"tag:server\"\n ],\n \"users\": [\n \"root\"\n ],\n \"allowLocalPortForwarding\": false\n }\n ]\n },\n \"options\": {\n \"expect_api_error\": true\n }\n}\n", + "scenario_path": "scenarios/ssh-forwarding/ssh-forwarding-accept-local.hujson", + "full_policy": {"grants": [{"dst": ["*"], "ip": ["*"], "src": ["*"]}], "ssh": [{ + "action": "accept", + "allowLocalPortForwarding": false, + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": {"tag:server": ["odin@example.com"]}} + }, + "topology": { + "users": [{"id": 1, "name": "odin", "email": "odin@example.com"}], + "nodes": {"beedrill": { + "hostname": "beedrill", + "tags": ["tag:server"], + "ipv4": "100.101.224.32", + "ipv6": "fd7a:115c:a1e0::628:e021", + "routable_ips": [], + "approved_routes": [] + }, "bulbasaur": { + "hostname": "bulbasaur", + "tags": [], + "ipv4": "100.94.170.124", + "ipv6": "fd7a:115c:a1e0::1728:aa7d", + "user": "odin", + "routable_ips": [], + "approved_routes": [] + }} + }, + "captures": {"beedrill": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 6947509606313415, + "StableID": "n49JHCJYFw11CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 6947509606313415, + "Key": "nodekey:78d16793c7427900621f3c2424dcdcf39457d7cd6a85232d887cd3dc0665e020", + "DiscoKey": "discokey:82946157d0d5008fe39462bf956794655976e23f01fb556ecbad3c28f242e82c", + "Addresses": ["100.101.224.32/32", "fd7a:115c:a1e0::628:e021/128"], + "AllowedIPs": ["100.101.224.32/32", "fd7a:115c:a1e0::628:e021/128"], + "Endpoints": [ + "77.164.248.136:36910", + "10.65.0.27:36910", + "172.17.0.1:36910", + "172.18.0.1:36910", + "172.19.0.1:36910" + ], + "Hostinfo": {"Hostname": "beedrill", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 33789}, + {"Proto": "peerapi6", "Port": 33789}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:22:53.930658655Z", + "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": "beedrill", + "ComputedNameWithHost": "beedrill" + }, + "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:78d16793c7427900621f3c2424dcdcf39457d7cd6a85232d887cd3dc0665e020", + "MachineKey": "mkey:a226fbbc0b2b221c58a42c9b97ff271d942901f7fc418ee3b5ffc6920b6ecd43", + "Peers": [{ + "ID": 2884692708222237, + "StableID": "nUkeTBzUXP11CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ce964cdb8a41b61e186054f5655a6a981b6634e3fb35be3e06a32008171eaa7c", + "KeyExpiry": "2027-04-27T09:22:54Z", + "DiscoKey": "discokey:968010ea876c421256cd1b3cb9eabbd964d2ecdcd4a7afa749f94ac60d2ab938", + "Addresses": ["100.94.170.124/32", "fd7a:115c:a1e0::1728:aa7d/128"], + "AllowedIPs": ["100.94.170.124/32", "fd7a:115c:a1e0::1728:aa7d/128"], + "Endpoints": [ + "77.164.248.136:40759", + "10.65.0.27:40759", + "172.17.0.1:40759", + "172.18.0.1:40759", + "172.19.0.1:40759" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 46044}, + {"Proto": "peerapi6", "Port": 46044} + ]}, + "Created": "2026-10-29T09:22:54.491571467Z", + "Cap": 148, + "Online": true, + "ComputedName": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "6947509606313415": { + "ID": 6947509606313415, + "LoginName": "beedrill.tail78f774.ts.net", + "DisplayName": "beedrill" + }} + } + }, "bulbasaur": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 2884692708222237, + "StableID": "nUkeTBzUXP11CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:ce964cdb8a41b61e186054f5655a6a981b6634e3fb35be3e06a32008171eaa7c", + "KeyExpiry": "2027-04-27T09:22:54Z", + "DiscoKey": "discokey:968010ea876c421256cd1b3cb9eabbd964d2ecdcd4a7afa749f94ac60d2ab938", + "Addresses": ["100.94.170.124/32", "fd7a:115c:a1e0::1728:aa7d/128"], + "AllowedIPs": ["100.94.170.124/32", "fd7a:115c:a1e0::1728:aa7d/128"], + "Endpoints": [ + "77.164.248.136:40759", + "10.65.0.27:40759", + "172.17.0.1:40759", + "172.18.0.1:40759", + "172.19.0.1:40759" + ], + "Hostinfo": {"Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 46044}, + {"Proto": "peerapi6", "Port": 46044}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:22:54.491571467Z", + "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": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }, + "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:ce964cdb8a41b61e186054f5655a6a981b6634e3fb35be3e06a32008171eaa7c", + "MachineKey": "mkey:ab8e362628389519e3ccb90a4ef93ef0da8895a062c1a7ebecc9a359c8926e68", + "Peers": [{ + "ID": 6947509606313415, + "StableID": "n49JHCJYFw11CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:78d16793c7427900621f3c2424dcdcf39457d7cd6a85232d887cd3dc0665e020", + "DiscoKey": "discokey:82946157d0d5008fe39462bf956794655976e23f01fb556ecbad3c28f242e82c", + "Addresses": ["100.101.224.32/32", "fd7a:115c:a1e0::628:e021/128"], + "AllowedIPs": ["100.101.224.32/32", "fd7a:115c:a1e0::628:e021/128"], + "Endpoints": [ + "77.164.248.136:36910", + "10.65.0.27:36910", + "172.17.0.1:36910", + "172.18.0.1:36910", + "172.19.0.1:36910" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "beedrill", "Services": [ + {"Proto": "peerapi4", "Port": 33789}, + {"Proto": "peerapi6", "Port": 33789} + ]}, + "Created": "2026-10-29T09:22:53.930658655Z", + "Cap": 148, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "beedrill", + "ComputedNameWithHost": "beedrill" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + } + }} +} diff --git a/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-remote.hujson b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-remote.hujson new file mode 100644 index 000000000..22ff8eae9 --- /dev/null +++ b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-accept-remote.hujson @@ -0,0 +1,1985 @@ +// ssh-forwarding-accept-remote +// +// Upstream accept SSH forwarding: allowRemotePortForwarding=false (Tailscale 1.104.4; explicit root user) +// +// Nodes with filter rules: 2 of 2 +// Captured at: 2026-10-29T09:23:00Z +// tool version: tscap/dev +// schema version: 1 +{ + "schema_version": 1, + "test_id": "ssh-forwarding-accept-remote", + "description": "Upstream accept SSH forwarding: allowRemotePortForwarding=false (Tailscale 1.104.4; explicit root user)", + "category": "ssh", + "captured_at": "2026-10-29T09:23:00.029517194Z", + "tool_version": "tscap/dev", + "tailnet": "odin@example.com", + "error": true, + "input": { + "api_response_code": 400, + "api_response_body": {"message": "json: unknown field \"allowRemotePortForwarding\""}, + "tailnet": { + "dns": {"magic_dns": false, "nameservers": [], "search_paths": [], "split_dns": {}}, + "settings": {} + }, + "scenario_hujson": "{\n \"id\": \"ssh-forwarding-accept-remote\",\n \"category\": \"ssh\",\n \"description\": \"Upstream accept SSH forwarding: allowRemotePortForwarding=false (Tailscale 1.104.4; explicit root user)\",\n \"topology\": {\n \"users\": [\n {\n \"id\": 1,\n \"name\": \"odin\",\n \"email\": \"odin@example.com\"\n }\n ],\n \"nodes\": {\n \"bulbasaur\": {\n \"hostname\": \"bulbasaur\",\n \"user\": \"odin\",\n \"tags\": [],\n \"routable_ips\": [],\n \"approved_routes\": []\n },\n \"beedrill\": {\n \"hostname\": \"beedrill\",\n \"tags\": [\n \"tag:server\"\n ],\n \"routable_ips\": [],\n \"approved_routes\": []\n }\n }\n },\n \"tailnet\": {\n \"dns\": {\n \"magic_dns\": false,\n \"nameservers\": [],\n \"search_paths\": [],\n \"split_dns\": {}\n },\n \"settings\": {}\n },\n \"policy\": {\n \"grants\": [\n {\n \"src\": [\n \"*\"\n ],\n \"dst\": [\n \"*\"\n ],\n \"ip\": [\n \"*\"\n ]\n }\n ],\n \"tagOwners\": {\n \"tag:server\": [\n \"odin@example.com\"\n ]\n },\n \"ssh\": [\n {\n \"action\": \"accept\",\n \"src\": [\n \"autogroup:member\"\n ],\n \"dst\": [\n \"tag:server\"\n ],\n \"users\": [\n \"root\"\n ],\n \"allowRemotePortForwarding\": false\n }\n ]\n },\n \"options\": {\n \"expect_api_error\": true\n }\n}\n", + "scenario_path": "scenarios/ssh-forwarding/ssh-forwarding-accept-remote.hujson", + "full_policy": {"grants": [{"dst": ["*"], "ip": ["*"], "src": ["*"]}], "ssh": [{ + "action": "accept", + "allowRemotePortForwarding": false, + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": {"tag:server": ["odin@example.com"]}} + }, + "topology": { + "users": [{"id": 1, "name": "odin", "email": "odin@example.com"}], + "nodes": {"beedrill": { + "hostname": "beedrill", + "tags": ["tag:server"], + "ipv4": "100.88.209.98", + "ipv6": "fd7a:115c:a1e0::a28:d163", + "routable_ips": [], + "approved_routes": [] + }, "bulbasaur": { + "hostname": "bulbasaur", + "tags": [], + "ipv4": "100.117.13.25", + "ipv6": "fd7a:115c:a1e0::9028:d1a", + "user": "odin", + "routable_ips": [], + "approved_routes": [] + }} + }, + "captures": {"beedrill": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 3748407695410435, + "StableID": "npX1EDKfGW11CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 3748407695410435, + "Key": "nodekey:84e95eb47f6fd69015f88be1d65ff83e17e36501766df1b4891b27b20a98d162", + "DiscoKey": "discokey:607687291dd4e4223a9dd17fea19111dbd61313b41d0c96ca3667ad0bcc0331b", + "Addresses": ["100.88.209.98/32", "fd7a:115c:a1e0::a28:d163/128"], + "AllowedIPs": ["100.88.209.98/32", "fd7a:115c:a1e0::a28:d163/128"], + "Endpoints": [ + "77.164.248.136:37016", + "10.65.0.27:37016", + "172.17.0.1:37016", + "172.18.0.1:37016", + "172.19.0.1:37016" + ], + "Hostinfo": {"Hostname": "beedrill", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 53808}, + {"Proto": "peerapi6", "Port": 53808}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:23:00.742010684Z", + "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": "beedrill", + "ComputedNameWithHost": "beedrill" + }, + "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:84e95eb47f6fd69015f88be1d65ff83e17e36501766df1b4891b27b20a98d162", + "MachineKey": "mkey:37f2c81b1924b52fc7048c0a9e9966300a0c0f40e0dc86393d820b5284a04559", + "Peers": [{ + "ID": 5958833250259398, + "StableID": "nDG4GpSmXo11CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:bddfcf6f2fe8c8f911eba5f0a9a688fd20b9a841227b3c505e47d19c90b50d19", + "KeyExpiry": "2027-04-27T09:23:01Z", + "DiscoKey": "discokey:a3c3374b4db3730c4b13c65fe63afc947548e82fa1d093d6c40c20dd25345a06", + "Addresses": ["100.117.13.25/32", "fd7a:115c:a1e0::9028:d1a/128"], + "AllowedIPs": ["100.117.13.25/32", "fd7a:115c:a1e0::9028:d1a/128"], + "Endpoints": [ + "77.164.248.136:43736", + "10.65.0.27:43736", + "172.17.0.1:43736", + "172.18.0.1:43736", + "172.19.0.1:43736" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 42276}, + {"Proto": "peerapi6", "Port": 42276} + ]}, + "Created": "2026-10-29T09:23:01.303187759Z", + "Cap": 148, + "Online": true, + "ComputedName": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3748407695410435": { + "ID": 3748407695410435, + "LoginName": "beedrill.tail78f774.ts.net", + "DisplayName": "beedrill" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + } + }, "bulbasaur": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 5958833250259398, + "StableID": "nDG4GpSmXo11CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:bddfcf6f2fe8c8f911eba5f0a9a688fd20b9a841227b3c505e47d19c90b50d19", + "KeyExpiry": "2027-04-27T09:23:01Z", + "DiscoKey": "discokey:a3c3374b4db3730c4b13c65fe63afc947548e82fa1d093d6c40c20dd25345a06", + "Addresses": ["100.117.13.25/32", "fd7a:115c:a1e0::9028:d1a/128"], + "AllowedIPs": ["100.117.13.25/32", "fd7a:115c:a1e0::9028:d1a/128"], + "Endpoints": [ + "77.164.248.136:43736", + "10.65.0.27:43736", + "172.17.0.1:43736", + "172.18.0.1:43736", + "172.19.0.1:43736" + ], + "Hostinfo": {"Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 42276}, + {"Proto": "peerapi6", "Port": 42276}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:23:01.303187759Z", + "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": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }, + "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:bddfcf6f2fe8c8f911eba5f0a9a688fd20b9a841227b3c505e47d19c90b50d19", + "MachineKey": "mkey:c6a9882971da850d98ba8bf5af966dcde6dd349988a88d6c744bf2bc93c97f32", + "Peers": [{ + "ID": 3748407695410435, + "StableID": "npX1EDKfGW11CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:84e95eb47f6fd69015f88be1d65ff83e17e36501766df1b4891b27b20a98d162", + "DiscoKey": "discokey:607687291dd4e4223a9dd17fea19111dbd61313b41d0c96ca3667ad0bcc0331b", + "Addresses": ["100.88.209.98/32", "fd7a:115c:a1e0::a28:d163/128"], + "AllowedIPs": ["100.88.209.98/32", "fd7a:115c:a1e0::a28:d163/128"], + "Endpoints": [ + "77.164.248.136:37016", + "10.65.0.27:37016", + "172.17.0.1:37016", + "172.18.0.1:37016", + "172.19.0.1:37016" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "beedrill", "Services": [ + {"Proto": "peerapi4", "Port": 53808}, + {"Proto": "peerapi6", "Port": 53808} + ]}, + "Created": "2026-10-29T09:23:00.742010684Z", + "Cap": 148, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "beedrill", + "ComputedNameWithHost": "beedrill" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + } + }} +} diff --git a/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-agent.hujson b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-agent.hujson new file mode 100644 index 000000000..69615be3e --- /dev/null +++ b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-agent.hujson @@ -0,0 +1,1985 @@ +// ssh-forwarding-check-agent +// +// Upstream check SSH forwarding: allowAgentForwarding=false (Tailscale 1.104.4; explicit root user) +// +// Nodes with filter rules: 2 of 2 +// Captured at: 2026-10-29T09:23:06Z +// tool version: tscap/dev +// schema version: 1 +{ + "schema_version": 1, + "test_id": "ssh-forwarding-check-agent", + "description": "Upstream check SSH forwarding: allowAgentForwarding=false (Tailscale 1.104.4; explicit root user)", + "category": "ssh", + "captured_at": "2026-10-29T09:23:06.834499019Z", + "tool_version": "tscap/dev", + "tailnet": "odin@example.com", + "error": true, + "input": { + "api_response_code": 400, + "api_response_body": {"message": "json: unknown field \"allowAgentForwarding\""}, + "tailnet": { + "dns": {"magic_dns": false, "nameservers": [], "search_paths": [], "split_dns": {}}, + "settings": {} + }, + "scenario_hujson": "{\n \"id\": \"ssh-forwarding-check-agent\",\n \"category\": \"ssh\",\n \"description\": \"Upstream check SSH forwarding: allowAgentForwarding=false (Tailscale 1.104.4; explicit root user)\",\n \"topology\": {\n \"users\": [\n {\n \"id\": 1,\n \"name\": \"odin\",\n \"email\": \"odin@example.com\"\n }\n ],\n \"nodes\": {\n \"bulbasaur\": {\n \"hostname\": \"bulbasaur\",\n \"user\": \"odin\",\n \"tags\": [],\n \"routable_ips\": [],\n \"approved_routes\": []\n },\n \"beedrill\": {\n \"hostname\": \"beedrill\",\n \"tags\": [\n \"tag:server\"\n ],\n \"routable_ips\": [],\n \"approved_routes\": []\n }\n }\n },\n \"tailnet\": {\n \"dns\": {\n \"magic_dns\": false,\n \"nameservers\": [],\n \"search_paths\": [],\n \"split_dns\": {}\n },\n \"settings\": {}\n },\n \"policy\": {\n \"grants\": [\n {\n \"src\": [\n \"*\"\n ],\n \"dst\": [\n \"*\"\n ],\n \"ip\": [\n \"*\"\n ]\n }\n ],\n \"tagOwners\": {\n \"tag:server\": [\n \"odin@example.com\"\n ]\n },\n \"ssh\": [\n {\n \"action\": \"check\",\n \"src\": [\n \"autogroup:member\"\n ],\n \"dst\": [\n \"tag:server\"\n ],\n \"users\": [\n \"root\"\n ],\n \"allowAgentForwarding\": false\n }\n ]\n },\n \"options\": {\n \"expect_api_error\": true\n }\n}\n", + "scenario_path": "scenarios/ssh-forwarding/ssh-forwarding-check-agent.hujson", + "full_policy": {"grants": [{"dst": ["*"], "ip": ["*"], "src": ["*"]}], "ssh": [{ + "action": "check", + "allowAgentForwarding": false, + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": {"tag:server": ["odin@example.com"]}} + }, + "topology": { + "users": [{"id": 1, "name": "odin", "email": "odin@example.com"}], + "nodes": {"beedrill": { + "hostname": "beedrill", + "tags": ["tag:server"], + "ipv4": "100.67.8.33", + "ipv6": "fd7a:115c:a1e0::1228:822", + "routable_ips": [], + "approved_routes": [] + }, "bulbasaur": { + "hostname": "bulbasaur", + "tags": [], + "ipv4": "100.72.214.15", + "ipv6": "fd7a:115c:a1e0::8828:d610", + "user": "odin", + "routable_ips": [], + "approved_routes": [] + }} + }, + "captures": {"beedrill": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 4392372543218573, + "StableID": "nQWvfMBKJb11CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 4392372543218573, + "Key": "nodekey:7fcb6e90cdb2ec8817a3a4fb5b1b50eb3714909fb65c71559b7d1db812030821", + "DiscoKey": "discokey:257517e2cdb30e9e7d94b30b810a8c640a0a88290b20d32da7f7823f190dc326", + "Addresses": ["100.67.8.33/32", "fd7a:115c:a1e0::1228:822/128"], + "AllowedIPs": ["100.67.8.33/32", "fd7a:115c:a1e0::1228:822/128"], + "Endpoints": [ + "77.164.248.136:32817", + "10.65.0.27:32817", + "172.17.0.1:32817", + "172.18.0.1:32817", + "172.19.0.1:32817" + ], + "Hostinfo": {"Hostname": "beedrill", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 61661}, + {"Proto": "peerapi6", "Port": 61661}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:23:07.732319513Z", + "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": "beedrill", + "ComputedNameWithHost": "beedrill" + }, + "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:7fcb6e90cdb2ec8817a3a4fb5b1b50eb3714909fb65c71559b7d1db812030821", + "MachineKey": "mkey:6c42260b0ead41d98ea5e2d020eee518cf03cb5a694d0821b4be6a76bebcf336", + "Peers": [{ + "ID": 4338108080868720, + "StableID": "nfNHx6kjsa11CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:c541814237cbde9a33ad76ef53e1f174046c8f18f42d14b3dcbf6ddb8808d60f", + "KeyExpiry": "2027-04-27T09:23:08Z", + "DiscoKey": "discokey:5121d61415bcfa0422ef8c6233f607e55f333536723ebcdb28a22f45a63be46d", + "Addresses": ["100.72.214.15/32", "fd7a:115c:a1e0::8828:d610/128"], + "AllowedIPs": ["100.72.214.15/32", "fd7a:115c:a1e0::8828:d610/128"], + "Endpoints": [ + "77.164.248.136:43698", + "10.65.0.27:43698", + "172.17.0.1:43698", + "172.18.0.1:43698", + "172.19.0.1:43698" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 64098}, + {"Proto": "peerapi6", "Port": 64098} + ]}, + "Created": "2026-10-29T09:23:08.291966915Z", + "Cap": 148, + "Online": true, + "ComputedName": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "4392372543218573": { + "ID": 4392372543218573, + "LoginName": "beedrill.tail78f774.ts.net", + "DisplayName": "beedrill" + }} + } + }, "bulbasaur": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 4338108080868720, + "StableID": "nfNHx6kjsa11CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:c541814237cbde9a33ad76ef53e1f174046c8f18f42d14b3dcbf6ddb8808d60f", + "KeyExpiry": "2027-04-27T09:23:08Z", + "DiscoKey": "discokey:5121d61415bcfa0422ef8c6233f607e55f333536723ebcdb28a22f45a63be46d", + "Addresses": ["100.72.214.15/32", "fd7a:115c:a1e0::8828:d610/128"], + "AllowedIPs": ["100.72.214.15/32", "fd7a:115c:a1e0::8828:d610/128"], + "Endpoints": [ + "77.164.248.136:43698", + "10.65.0.27:43698", + "172.17.0.1:43698", + "172.18.0.1:43698", + "172.19.0.1:43698" + ], + "Hostinfo": {"Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 64098}, + {"Proto": "peerapi6", "Port": 64098}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:23:08.291966915Z", + "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": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }, + "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:c541814237cbde9a33ad76ef53e1f174046c8f18f42d14b3dcbf6ddb8808d60f", + "MachineKey": "mkey:c14138427c1f9b392c1bb4805344f7ac90d2f9bcb56c164e84d87bc4d3386478", + "Peers": [{ + "ID": 4392372543218573, + "StableID": "nQWvfMBKJb11CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:7fcb6e90cdb2ec8817a3a4fb5b1b50eb3714909fb65c71559b7d1db812030821", + "DiscoKey": "discokey:257517e2cdb30e9e7d94b30b810a8c640a0a88290b20d32da7f7823f190dc326", + "Addresses": ["100.67.8.33/32", "fd7a:115c:a1e0::1228:822/128"], + "AllowedIPs": ["100.67.8.33/32", "fd7a:115c:a1e0::1228:822/128"], + "Endpoints": [ + "77.164.248.136:32817", + "10.65.0.27:32817", + "172.17.0.1:32817", + "172.18.0.1:32817", + "172.19.0.1:32817" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "beedrill", "Services": [ + {"Proto": "peerapi4", "Port": 61661}, + {"Proto": "peerapi6", "Port": 61661} + ]}, + "Created": "2026-10-29T09:23:07.732319513Z", + "Cap": 148, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "beedrill", + "ComputedNameWithHost": "beedrill" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + } + }} +} diff --git a/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-default.hujson b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-default.hujson new file mode 100644 index 000000000..8c9c46c8c --- /dev/null +++ b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-default.hujson @@ -0,0 +1,1995 @@ +// ssh-forwarding-check-default +// +// Upstream check SSH forwarding: omitted forwarding fields (Tailscale 1.104.4; explicit root user) +// +// Nodes with filter rules: 2 of 2 +// Captured at: 2026-10-29T09:23:13Z +// tool version: tscap/dev +// schema version: 1 +{ + "schema_version": 1, + "test_id": "ssh-forwarding-check-default", + "description": "Upstream check SSH forwarding: omitted forwarding fields (Tailscale 1.104.4; explicit root user)", + "category": "ssh", + "captured_at": "2026-10-29T09:23:13.822628663Z", + "tool_version": "tscap/dev", + "tailnet": "odin@example.com", + "input": { + "api_response_code": 200, + "tailnet": { + "dns": {"magic_dns": false, "nameservers": [], "search_paths": [], "split_dns": {}}, + "settings": {} + }, + "scenario_hujson": "{\n \"id\": \"ssh-forwarding-check-default\",\n \"category\": \"ssh\",\n \"description\": \"Upstream check SSH forwarding: omitted forwarding fields (Tailscale 1.104.4; explicit root user)\",\n \"topology\": {\n \"users\": [\n {\n \"id\": 1,\n \"name\": \"odin\",\n \"email\": \"odin@example.com\"\n }\n ],\n \"nodes\": {\n \"bulbasaur\": {\n \"hostname\": \"bulbasaur\",\n \"user\": \"odin\",\n \"tags\": [],\n \"routable_ips\": [],\n \"approved_routes\": []\n },\n \"beedrill\": {\n \"hostname\": \"beedrill\",\n \"tags\": [\n \"tag:server\"\n ],\n \"routable_ips\": [],\n \"approved_routes\": []\n }\n }\n },\n \"tailnet\": {\n \"dns\": {\n \"magic_dns\": false,\n \"nameservers\": [],\n \"search_paths\": [],\n \"split_dns\": {}\n },\n \"settings\": {}\n },\n \"policy\": {\n \"grants\": [\n {\n \"src\": [\n \"*\"\n ],\n \"dst\": [\n \"*\"\n ],\n \"ip\": [\n \"*\"\n ]\n }\n ],\n \"tagOwners\": {\n \"tag:server\": [\n \"odin@example.com\"\n ]\n },\n \"ssh\": [\n {\n \"action\": \"check\",\n \"src\": [\n \"autogroup:member\"\n ],\n \"dst\": [\n \"tag:server\"\n ],\n \"users\": [\n \"root\"\n ]\n }\n ]\n },\n \"options\": {\n \"expect_api_error\": false\n }\n}\n", + "scenario_path": "scenarios/ssh-forwarding/ssh-forwarding-check-default.hujson", + "full_policy": {"grants": [{"dst": ["*"], "ip": ["*"], "src": ["*"]}], "ssh": [{ + "action": "check", + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": {"tag:server": ["odin@example.com"]}} + }, + "topology": { + "users": [{"id": 1, "name": "odin", "email": "odin@example.com"}], + "nodes": {"beedrill": { + "hostname": "beedrill", + "tags": ["tag:server"], + "ipv4": "100.80.45.86", + "ipv6": "fd7a:115c:a1e0::a828:2d57", + "routable_ips": [], + "approved_routes": [] + }, "bulbasaur": { + "hostname": "bulbasaur", + "tags": [], + "ipv4": "100.108.153.21", + "ipv6": "fd7a:115c:a1e0::2228:9916", + "user": "odin", + "routable_ips": [], + "approved_routes": [] + }} + }, + "captures": {"beedrill": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 3929233485735985, + "StableID": "nWPB7TJZgX11CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 3929233485735985, + "Key": "nodekey:04008fe4a9804bc9c370dca2051d3c6718b6ae64e847b4adbfc98397a8102d56", + "DiscoKey": "discokey:696f64904045baf92d632a678bcdaafb5187295d5334d49a8a390d4318305469", + "Addresses": ["100.80.45.86/32", "fd7a:115c:a1e0::a828:2d57/128"], + "AllowedIPs": ["100.80.45.86/32", "fd7a:115c:a1e0::a828:2d57/128"], + "Endpoints": [ + "77.164.248.136:53518", + "10.65.0.27:53518", + "172.17.0.1:53518", + "172.18.0.1:53518", + "172.19.0.1:53518" + ], + "Hostinfo": {"Hostname": "beedrill", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 55692}, + {"Proto": "peerapi6", "Port": 55692}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:23:14.563939845Z", + "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": "beedrill", + "ComputedNameWithHost": "beedrill" + }, + "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:04008fe4a9804bc9c370dca2051d3c6718b6ae64e847b4adbfc98397a8102d56", + "MachineKey": "mkey:446eaf57519fd1173a07d3cf6adae18db65f72980e8e7460e862ff3b7f88570e", + "Peers": [{ + "ID": 5340680099000884, + "StableID": "nDVq3Pcohi11CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:c9d442f646ec57b9c249b907b2cd8feb397780aad0ab10a5c3c967ea22ec9915", + "KeyExpiry": "2027-04-27T09:23:15Z", + "DiscoKey": "discokey:a15de77d1ffb87766bb6405c05bbb205c7cb65b1dac5e8732f17adffbbf8432a", + "Addresses": ["100.108.153.21/32", "fd7a:115c:a1e0::2228:9916/128"], + "AllowedIPs": ["100.108.153.21/32", "fd7a:115c:a1e0::2228:9916/128"], + "Endpoints": [ + "77.164.248.136:52447", + "10.65.0.27:52447", + "172.17.0.1:52447", + "172.18.0.1:52447", + "172.19.0.1:52447" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 48878}, + {"Proto": "peerapi6", "Port": 48878} + ]}, + "Created": "2026-10-29T09:23:15.117045973Z", + "Cap": 148, + "Online": true, + "ComputedName": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": [{ + "principals": [{"nodeIP": "100.108.153.21"}, {"nodeIP": "fd7a:115c:a1e0::2228:9916"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "holdAndDelegate": "https://unused/machine/ssh/action/$SRC_NODE_ID/to/$DST_NODE_ID?local_user=$LOCAL_USER" + } + }]}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"3929233485735985": { + "ID": 3929233485735985, + "LoginName": "beedrill.tail78f774.ts.net", + "DisplayName": "beedrill" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + }, + "ssh_rules": [{ + "principals": [{"nodeIP": "100.108.153.21"}, {"nodeIP": "fd7a:115c:a1e0::2228:9916"}], + "sshUsers": {"0": "", "root": "root"}, + "action": { + "holdAndDelegate": "https://unused/machine/ssh/action/$SRC_NODE_ID/to/$DST_NODE_ID?local_user=$LOCAL_USER" + } + }] + }, "bulbasaur": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 5340680099000884, + "StableID": "nDVq3Pcohi11CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:c9d442f646ec57b9c249b907b2cd8feb397780aad0ab10a5c3c967ea22ec9915", + "KeyExpiry": "2027-04-27T09:23:15Z", + "DiscoKey": "discokey:a15de77d1ffb87766bb6405c05bbb205c7cb65b1dac5e8732f17adffbbf8432a", + "Addresses": ["100.108.153.21/32", "fd7a:115c:a1e0::2228:9916/128"], + "AllowedIPs": ["100.108.153.21/32", "fd7a:115c:a1e0::2228:9916/128"], + "Endpoints": [ + "77.164.248.136:52447", + "10.65.0.27:52447", + "172.17.0.1:52447", + "172.18.0.1:52447", + "172.19.0.1:52447" + ], + "Hostinfo": {"Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 48878}, + {"Proto": "peerapi6", "Port": 48878}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:23:15.117045973Z", + "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": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }, + "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:c9d442f646ec57b9c249b907b2cd8feb397780aad0ab10a5c3c967ea22ec9915", + "MachineKey": "mkey:c3ff239ecdb587649e994d43ada856ccc4d9ab9e16aa6767517e4bbe87605f10", + "Peers": [{ + "ID": 3929233485735985, + "StableID": "nWPB7TJZgX11CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:04008fe4a9804bc9c370dca2051d3c6718b6ae64e847b4adbfc98397a8102d56", + "DiscoKey": "discokey:696f64904045baf92d632a678bcdaafb5187295d5334d49a8a390d4318305469", + "Addresses": ["100.80.45.86/32", "fd7a:115c:a1e0::a828:2d57/128"], + "AllowedIPs": ["100.80.45.86/32", "fd7a:115c:a1e0::a828:2d57/128"], + "Endpoints": [ + "77.164.248.136:53518", + "10.65.0.27:53518", + "172.17.0.1:53518", + "172.18.0.1:53518", + "172.19.0.1:53518" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "beedrill", "Services": [ + {"Proto": "peerapi4", "Port": 55692}, + {"Proto": "peerapi6", "Port": 55692} + ]}, + "Created": "2026-10-29T09:23:14.563939845Z", + "Cap": 148, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "beedrill", + "ComputedNameWithHost": "beedrill" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + } + }} +} diff --git a/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-local.hujson b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-local.hujson new file mode 100644 index 000000000..71b0bb0bc --- /dev/null +++ b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-local.hujson @@ -0,0 +1,1985 @@ +// ssh-forwarding-check-local +// +// Upstream check SSH forwarding: allowLocalPortForwarding=false (Tailscale 1.104.4; explicit root user) +// +// Nodes with filter rules: 2 of 2 +// Captured at: 2026-10-29T09:23:29Z +// tool version: tscap/dev +// schema version: 1 +{ + "schema_version": 1, + "test_id": "ssh-forwarding-check-local", + "description": "Upstream check SSH forwarding: allowLocalPortForwarding=false (Tailscale 1.104.4; explicit root user)", + "category": "ssh", + "captured_at": "2026-10-29T09:23:29.705591509Z", + "tool_version": "tscap/dev", + "tailnet": "odin@example.com", + "error": true, + "input": { + "api_response_code": 400, + "api_response_body": {"message": "json: unknown field \"allowLocalPortForwarding\""}, + "tailnet": { + "dns": {"magic_dns": false, "nameservers": [], "search_paths": [], "split_dns": {}}, + "settings": {} + }, + "scenario_hujson": "{\n \"id\": \"ssh-forwarding-check-local\",\n \"category\": \"ssh\",\n \"description\": \"Upstream check SSH forwarding: allowLocalPortForwarding=false (Tailscale 1.104.4; explicit root user)\",\n \"topology\": {\n \"users\": [\n {\n \"id\": 1,\n \"name\": \"odin\",\n \"email\": \"odin@example.com\"\n }\n ],\n \"nodes\": {\n \"bulbasaur\": {\n \"hostname\": \"bulbasaur\",\n \"user\": \"odin\",\n \"tags\": [],\n \"routable_ips\": [],\n \"approved_routes\": []\n },\n \"beedrill\": {\n \"hostname\": \"beedrill\",\n \"tags\": [\n \"tag:server\"\n ],\n \"routable_ips\": [],\n \"approved_routes\": []\n }\n }\n },\n \"tailnet\": {\n \"dns\": {\n \"magic_dns\": false,\n \"nameservers\": [],\n \"search_paths\": [],\n \"split_dns\": {}\n },\n \"settings\": {}\n },\n \"policy\": {\n \"grants\": [\n {\n \"src\": [\n \"*\"\n ],\n \"dst\": [\n \"*\"\n ],\n \"ip\": [\n \"*\"\n ]\n }\n ],\n \"tagOwners\": {\n \"tag:server\": [\n \"odin@example.com\"\n ]\n },\n \"ssh\": [\n {\n \"action\": \"check\",\n \"src\": [\n \"autogroup:member\"\n ],\n \"dst\": [\n \"tag:server\"\n ],\n \"users\": [\n \"root\"\n ],\n \"allowLocalPortForwarding\": false\n }\n ]\n },\n \"options\": {\n \"expect_api_error\": true\n }\n}\n", + "scenario_path": "scenarios/ssh-forwarding/ssh-forwarding-check-local.hujson", + "full_policy": {"grants": [{"dst": ["*"], "ip": ["*"], "src": ["*"]}], "ssh": [{ + "action": "check", + "allowLocalPortForwarding": false, + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": {"tag:server": ["odin@example.com"]}} + }, + "topology": { + "users": [{"id": 1, "name": "odin", "email": "odin@example.com"}], + "nodes": {"beedrill": { + "hostname": "beedrill", + "tags": ["tag:server"], + "ipv4": "100.72.139.46", + "ipv6": "fd7a:115c:a1e0::c428:8b2f", + "routable_ips": [], + "approved_routes": [] + }, "bulbasaur": { + "hostname": "bulbasaur", + "tags": [], + "ipv4": "100.80.30.25", + "ipv6": "fd7a:115c:a1e0::5b28:1e1a", + "user": "odin", + "routable_ips": [], + "approved_routes": [] + }} + }, + "captures": {"beedrill": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 6641298503673416, + "StableID": "nusFiherrt11CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 6641298503673416, + "Key": "nodekey:17e891057ff585d62ee1cbe226e8fc9abc26295d5f7c2347044cadbac4488b2e", + "DiscoKey": "discokey:05f9a9124cc419a31c0d1e8972660d679f2c682ce60b6162a488e58133579e76", + "Addresses": ["100.72.139.46/32", "fd7a:115c:a1e0::c428:8b2f/128"], + "AllowedIPs": ["100.72.139.46/32", "fd7a:115c:a1e0::c428:8b2f/128"], + "Endpoints": [ + "77.164.248.136:53220", + "10.65.0.27:53220", + "172.17.0.1:53220", + "172.18.0.1:53220", + "172.19.0.1:53220" + ], + "Hostinfo": {"Hostname": "beedrill", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 51493}, + {"Proto": "peerapi6", "Port": 51493}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:23:30.443178015Z", + "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": "beedrill", + "ComputedNameWithHost": "beedrill" + }, + "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:17e891057ff585d62ee1cbe226e8fc9abc26295d5f7c2347044cadbac4488b2e", + "MachineKey": "mkey:7bf52881a65eaeb17f5b2d49f99e40da040c0fbe020166d95add80b086ec630c", + "Peers": [{ + "ID": 7373307429556673, + "StableID": "nEyzqRHPaz11CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:232fea0f57f7d573d6f5240df855739ea356b1a610dc1c9502c80f155bd01e19", + "KeyExpiry": "2027-04-27T09:23:31Z", + "DiscoKey": "discokey:7152dae0df806ec9338c4a65804b8e0e8435ed2f21b54e65fc3db6ad7c9b3d6b", + "Addresses": ["100.80.30.25/32", "fd7a:115c:a1e0::5b28:1e1a/128"], + "AllowedIPs": ["100.80.30.25/32", "fd7a:115c:a1e0::5b28:1e1a/128"], + "Endpoints": [ + "77.164.248.136:47572", + "10.65.0.27:47572", + "172.17.0.1:47572", + "172.18.0.1:47572", + "172.19.0.1:47572" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 57533}, + {"Proto": "peerapi6", "Port": 57533} + ]}, + "Created": "2026-10-29T09:23:31.18461486Z", + "Cap": 148, + "Online": true, + "ComputedName": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "6641298503673416": { + "ID": 6641298503673416, + "LoginName": "beedrill.tail78f774.ts.net", + "DisplayName": "beedrill" + }} + } + }, "bulbasaur": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 7373307429556673, + "StableID": "nEyzqRHPaz11CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:232fea0f57f7d573d6f5240df855739ea356b1a610dc1c9502c80f155bd01e19", + "KeyExpiry": "2027-04-27T09:23:31Z", + "DiscoKey": "discokey:7152dae0df806ec9338c4a65804b8e0e8435ed2f21b54e65fc3db6ad7c9b3d6b", + "Addresses": ["100.80.30.25/32", "fd7a:115c:a1e0::5b28:1e1a/128"], + "AllowedIPs": ["100.80.30.25/32", "fd7a:115c:a1e0::5b28:1e1a/128"], + "Endpoints": [ + "77.164.248.136:47572", + "10.65.0.27:47572", + "172.17.0.1:47572", + "172.18.0.1:47572", + "172.19.0.1:47572" + ], + "Hostinfo": {"Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 57533}, + {"Proto": "peerapi6", "Port": 57533}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:23:31.18461486Z", + "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": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }, + "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:232fea0f57f7d573d6f5240df855739ea356b1a610dc1c9502c80f155bd01e19", + "MachineKey": "mkey:8891b570fd9ed49f5bbaf472d17513f21a6f761cff99f1938202c9106a14aa01", + "Peers": [{ + "ID": 6641298503673416, + "StableID": "nusFiherrt11CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:17e891057ff585d62ee1cbe226e8fc9abc26295d5f7c2347044cadbac4488b2e", + "DiscoKey": "discokey:05f9a9124cc419a31c0d1e8972660d679f2c682ce60b6162a488e58133579e76", + "Addresses": ["100.72.139.46/32", "fd7a:115c:a1e0::c428:8b2f/128"], + "AllowedIPs": ["100.72.139.46/32", "fd7a:115c:a1e0::c428:8b2f/128"], + "Endpoints": [ + "77.164.248.136:53220", + "10.65.0.27:53220", + "172.17.0.1:53220", + "172.18.0.1:53220", + "172.19.0.1:53220" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "beedrill", "Services": [ + {"Proto": "peerapi4", "Port": 51493}, + {"Proto": "peerapi6", "Port": 51493} + ]}, + "Created": "2026-10-29T09:23:30.443178015Z", + "Cap": 148, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "beedrill", + "ComputedNameWithHost": "beedrill" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + } + }} +} diff --git a/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-remote.hujson b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-remote.hujson new file mode 100644 index 000000000..c6df26f97 --- /dev/null +++ b/hscontrol/policy/v2/testdata/ssh_results/forwarding/ssh-forwarding-check-remote.hujson @@ -0,0 +1,1985 @@ +// ssh-forwarding-check-remote +// +// Upstream check SSH forwarding: allowRemotePortForwarding=false (Tailscale 1.104.4; explicit root user) +// +// Nodes with filter rules: 2 of 2 +// Captured at: 2026-10-29T09:23:36Z +// tool version: tscap/dev +// schema version: 1 +{ + "schema_version": 1, + "test_id": "ssh-forwarding-check-remote", + "description": "Upstream check SSH forwarding: allowRemotePortForwarding=false (Tailscale 1.104.4; explicit root user)", + "category": "ssh", + "captured_at": "2026-10-29T09:23:36.727217259Z", + "tool_version": "tscap/dev", + "tailnet": "odin@example.com", + "error": true, + "input": { + "api_response_code": 400, + "api_response_body": {"message": "json: unknown field \"allowRemotePortForwarding\""}, + "tailnet": { + "dns": {"magic_dns": false, "nameservers": [], "search_paths": [], "split_dns": {}}, + "settings": {} + }, + "scenario_hujson": "{\n \"id\": \"ssh-forwarding-check-remote\",\n \"category\": \"ssh\",\n \"description\": \"Upstream check SSH forwarding: allowRemotePortForwarding=false (Tailscale 1.104.4; explicit root user)\",\n \"topology\": {\n \"users\": [\n {\n \"id\": 1,\n \"name\": \"odin\",\n \"email\": \"odin@example.com\"\n }\n ],\n \"nodes\": {\n \"bulbasaur\": {\n \"hostname\": \"bulbasaur\",\n \"user\": \"odin\",\n \"tags\": [],\n \"routable_ips\": [],\n \"approved_routes\": []\n },\n \"beedrill\": {\n \"hostname\": \"beedrill\",\n \"tags\": [\n \"tag:server\"\n ],\n \"routable_ips\": [],\n \"approved_routes\": []\n }\n }\n },\n \"tailnet\": {\n \"dns\": {\n \"magic_dns\": false,\n \"nameservers\": [],\n \"search_paths\": [],\n \"split_dns\": {}\n },\n \"settings\": {}\n },\n \"policy\": {\n \"grants\": [\n {\n \"src\": [\n \"*\"\n ],\n \"dst\": [\n \"*\"\n ],\n \"ip\": [\n \"*\"\n ]\n }\n ],\n \"tagOwners\": {\n \"tag:server\": [\n \"odin@example.com\"\n ]\n },\n \"ssh\": [\n {\n \"action\": \"check\",\n \"src\": [\n \"autogroup:member\"\n ],\n \"dst\": [\n \"tag:server\"\n ],\n \"users\": [\n \"root\"\n ],\n \"allowRemotePortForwarding\": false\n }\n ]\n },\n \"options\": {\n \"expect_api_error\": true\n }\n}\n", + "scenario_path": "scenarios/ssh-forwarding/ssh-forwarding-check-remote.hujson", + "full_policy": {"grants": [{"dst": ["*"], "ip": ["*"], "src": ["*"]}], "ssh": [{ + "action": "check", + "allowRemotePortForwarding": false, + "dst": ["tag:server"], + "src": ["autogroup:member"], + "users": ["root"] + }], "tagOwners": {"tag:server": ["odin@example.com"]}} + }, + "topology": { + "users": [{"id": 1, "name": "odin", "email": "odin@example.com"}], + "nodes": {"beedrill": { + "hostname": "beedrill", + "tags": ["tag:server"], + "ipv4": "100.88.60.75", + "ipv6": "fd7a:115c:a1e0::e128:3c4c", + "routable_ips": [], + "approved_routes": [] + }, "bulbasaur": { + "hostname": "bulbasaur", + "tags": [], + "ipv4": "100.75.63.1", + "ipv6": "fd7a:115c:a1e0::b128:3f02", + "user": "odin", + "routable_ips": [], + "approved_routes": [] + }} + }, + "captures": {"beedrill": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 5894600907076114, + "StableID": "ny6f3tAg2o11CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 5894600907076114, + "Key": "nodekey:ba638fe91ce092909c3696e8e3ec081ee669f262db0853dbb30f5a5de1583c4b", + "DiscoKey": "discokey:89e8a7cd62b76596b7ee45a50150c3eaf9ce821c3103a8bb9e02285b4153706b", + "Addresses": ["100.88.60.75/32", "fd7a:115c:a1e0::e128:3c4c/128"], + "AllowedIPs": ["100.88.60.75/32", "fd7a:115c:a1e0::e128:3c4c/128"], + "Endpoints": [ + "77.164.248.136:47639", + "10.65.0.27:47639", + "172.17.0.1:47639", + "172.18.0.1:47639", + "172.19.0.1:47639" + ], + "Hostinfo": {"Hostname": "beedrill", "RequestTags": ["tag:server"], "Services": [ + {"Proto": "peerapi4", "Port": 51197}, + {"Proto": "peerapi6", "Port": 51197}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:23:37.501731196Z", + "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": "beedrill", + "ComputedNameWithHost": "beedrill" + }, + "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:ba638fe91ce092909c3696e8e3ec081ee669f262db0853dbb30f5a5de1583c4b", + "MachineKey": "mkey:532555b603c974c8b1844f867a7e6c7ea040cb5eb9b646349121d68bb9f8697b", + "Peers": [{ + "ID": 2270435511652044, + "StableID": "njnZRUVHjJ11CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:956be9ec5fe0d7f141987a3689803306d2d5818d65089f1cec93a4e3b1cb3f01", + "KeyExpiry": "2027-04-27T09:23:38Z", + "DiscoKey": "discokey:d48f2edf63c49a56fd027ab48b068347d04c2ebc578d74b8a48682a7552acc1a", + "Addresses": ["100.75.63.1/32", "fd7a:115c:a1e0::b128:3f02/128"], + "AllowedIPs": ["100.75.63.1/32", "fd7a:115c:a1e0::b128:3f02/128"], + "Endpoints": [ + "77.164.248.136:60943", + "10.65.0.27:60943", + "172.17.0.1:60943", + "172.18.0.1:60943", + "172.19.0.1:60943" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 41369}, + {"Proto": "peerapi6", "Port": 41369} + ]}, + "Created": "2026-10-29T09:23:38.113826954Z", + "Cap": 148, + "Online": true, + "ComputedName": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }, "5894600907076114": { + "ID": 5894600907076114, + "LoginName": "beedrill.tail78f774.ts.net", + "DisplayName": "beedrill" + }} + } + }, "bulbasaur": { + "packet_filter_rules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "packet_filter_matches": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "netmap": { + "Cached": false, + "SelfNode": { + "ID": 2270435511652044, + "StableID": "njnZRUVHjJ11CNTRL", + "Name": "bulbasaur.tail78f774.ts.net.", + "User": 4156223528223174, + "Key": "nodekey:956be9ec5fe0d7f141987a3689803306d2d5818d65089f1cec93a4e3b1cb3f01", + "KeyExpiry": "2027-04-27T09:23:38Z", + "DiscoKey": "discokey:d48f2edf63c49a56fd027ab48b068347d04c2ebc578d74b8a48682a7552acc1a", + "Addresses": ["100.75.63.1/32", "fd7a:115c:a1e0::b128:3f02/128"], + "AllowedIPs": ["100.75.63.1/32", "fd7a:115c:a1e0::b128:3f02/128"], + "Endpoints": [ + "77.164.248.136:60943", + "10.65.0.27:60943", + "172.17.0.1:60943", + "172.18.0.1:60943", + "172.19.0.1:60943" + ], + "Hostinfo": {"Hostname": "bulbasaur", "Services": [ + {"Proto": "peerapi4", "Port": 41369}, + {"Proto": "peerapi6", "Port": 41369}, + {"Proto": "peerapi-dns-proxy", "Port": 1} + ]}, + "Created": "2026-10-29T09:23:38.113826954Z", + "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": "bulbasaur", + "ComputedNameWithHost": "bulbasaur" + }, + "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:956be9ec5fe0d7f141987a3689803306d2d5818d65089f1cec93a4e3b1cb3f01", + "MachineKey": "mkey:b28cae41487a5eff4f7e3271d23e1c579d845f321fde5bf2ac7e7dd7cd0e6508", + "Peers": [{ + "ID": 5894600907076114, + "StableID": "ny6f3tAg2o11CNTRL", + "Name": "beedrill.tail78f774.ts.net.", + "User": 1260082990019555, + "Key": "nodekey:ba638fe91ce092909c3696e8e3ec081ee669f262db0853dbb30f5a5de1583c4b", + "DiscoKey": "discokey:89e8a7cd62b76596b7ee45a50150c3eaf9ce821c3103a8bb9e02285b4153706b", + "Addresses": ["100.88.60.75/32", "fd7a:115c:a1e0::e128:3c4c/128"], + "AllowedIPs": ["100.88.60.75/32", "fd7a:115c:a1e0::e128:3c4c/128"], + "Endpoints": [ + "77.164.248.136:47639", + "10.65.0.27:47639", + "172.17.0.1:47639", + "172.18.0.1:47639", + "172.19.0.1:47639" + ], + "HomeDERP": 14, + "Hostinfo": {"OS": "linux", "Hostname": "beedrill", "Services": [ + {"Proto": "peerapi4", "Port": 51197}, + {"Proto": "peerapi6", "Port": 51197} + ]}, + "Created": "2026-10-29T09:23:37.501731196Z", + "Cap": 148, + "Tags": ["tag:server"], + "Online": true, + "ComputedName": "beedrill", + "ComputedNameWithHost": "beedrill" + }], + "DNS": {"ExitNodeFilteredSet": [".ts.net", ".tailscale.net"]}, + "PacketFilter": [{"IPProto": [6, 17, 1, 58], "Srcs": [ + "100.115.94.0/23", + "100.115.96.0/19", + "100.115.128.0/17", + "100.116.0.0/14", + "100.120.0.0/13", + "100.64.0.0/11", + "100.96.0.0/12", + "100.112.0.0/15", + "100.114.0.0/16", + "100.115.0.0/18", + "100.115.64.0/20", + "100.115.80.0/21", + "100.115.88.0/22", + "fd7a:115c:a1e0::/48" + ], "SrcCaps": null, "Dsts": [ + {"Net": "0.0.0.0/0", "Ports": {"First": 0, "Last": 65535}}, + {"Net": "::/0", "Ports": {"First": 0, "Last": 65535}} + ], "Caps": []}], + "PacketFilterRules": [{"SrcIPs": [ + "100.115.94.0-100.127.255.255", + "100.64.0.0-100.115.91.255", + "fd7a:115c:a1e0::/48" + ], "DstPorts": [{"IP": "*", "Ports": {"First": 0, "Last": 65535}}]}], + "SSHPolicy": {"rules": []}, + "CollectServices": false, + "DERPMap": {"Regions": {"1": { + "RegionID": 1, + "RegionCode": "nyc", + "RegionName": "New York City", + "Latitude": 40.7128, + "Longitude": -74.006, + "Nodes": [{ + "Name": "1h", + "RegionID": 1, + "HostName": "derp1h.tailscale.com", + "IPv4": "199.38.181.93", + "IPv6": "2607:f740:f::afd", + "CanPort80": true + }, { + "Name": "1g", + "RegionID": 1, + "HostName": "derp1g.tailscale.com", + "IPv4": "209.177.145.120", + "IPv6": "2607:f740:f::3eb", + "CanPort80": true + }, { + "Name": "1i", + "RegionID": 1, + "HostName": "derp1i.tailscale.com", + "IPv4": "199.38.181.103", + "IPv6": "2607:f740:f::e19", + "CanPort80": true + }, { + "Name": "1f", + "RegionID": 1, + "HostName": "derp1f.tailscale.com", + "IPv4": "199.38.181.104", + "IPv6": "2607:f740:f::bc", + "CanPort80": true + }] + }, "10": { + "RegionID": 10, + "RegionCode": "sea", + "RegionName": "Seattle", + "Latitude": 47.609722, + "Longitude": -122.333056, + "Nodes": [{ + "Name": "10c", + "RegionID": 10, + "HostName": "derp10c.tailscale.com", + "IPv4": "192.73.240.121", + "IPv6": "2607:f740:14::40c", + "CanPort80": true + }, { + "Name": "10d", + "RegionID": 10, + "HostName": "derp10d.tailscale.com", + "IPv4": "192.73.240.132", + "IPv6": "2607:f740:14::500", + "CanPort80": true + }, { + "Name": "10b", + "RegionID": 10, + "HostName": "derp10b.tailscale.com", + "IPv4": "192.73.240.161", + "IPv6": "2607:f740:14::61c", + "CanPort80": true + }] + }, "11": { + "RegionID": 11, + "RegionCode": "sao", + "RegionName": "São Paulo", + "Latitude": -23.55, + "Longitude": -46.633333, + "Nodes": [{ + "Name": "11f", + "RegionID": 11, + "HostName": "derp11f.tailscale.com", + "IPv4": "172.237.61.197", + "IPv6": "2600:3c0d::2000:3bff:fe44:6166", + "CanPort80": true + }, { + "Name": "11g", + "RegionID": 11, + "HostName": "derp11g.tailscale.com", + "IPv4": "172.237.61.190", + "IPv6": "2600:3c0d::2000:62ff:febe:2e67", + "CanPort80": true + }, { + "Name": "11e", + "RegionID": 11, + "HostName": "derp11e.tailscale.com", + "IPv4": "172.237.61.194", + "IPv6": "2600:3c0d::2000:d2ff:fe43:1790", + "CanPort80": true + }] + }, "12": { + "RegionID": 12, + "RegionCode": "ord", + "RegionName": "Chicago", + "Latitude": 41.881944, + "Longitude": -87.627778, + "Nodes": [{ + "Name": "12e", + "RegionID": 12, + "HostName": "derp12e.tailscale.com", + "IPv4": "209.177.158.15", + "IPv6": "2607:f740:e::b17", + "CanPort80": true + }, { + "Name": "12f", + "RegionID": 12, + "HostName": "derp12f.tailscale.com", + "IPv4": "199.38.182.118", + "IPv6": "2607:f740:e::4c8", + "CanPort80": true + }, { + "Name": "12d", + "RegionID": 12, + "HostName": "derp12d.tailscale.com", + "IPv4": "209.177.158.246", + "IPv6": "2607:f740:e::811", + "CanPort80": true + }] + }, "13": { + "RegionID": 13, + "RegionCode": "den", + "RegionName": "Denver", + "Latitude": 39.7392, + "Longitude": -104.9849, + "Nodes": [{ + "Name": "13c", + "RegionID": 13, + "HostName": "derp13c.tailscale.com", + "IPv4": "192.73.242.28", + "IPv6": "2607:f740:16::5c", + "CanPort80": true + }, { + "Name": "13d", + "RegionID": 13, + "HostName": "derp13d.tailscale.com", + "IPv4": "192.73.242.204", + "IPv6": "2607:f740:16::c23", + "CanPort80": true + }, { + "Name": "13b", + "RegionID": 13, + "HostName": "derp13b.tailscale.com", + "IPv4": "192.73.242.187", + "IPv6": "2607:f740:16::640", + "CanPort80": true + }] + }, "14": { + "RegionID": 14, + "RegionCode": "ams", + "RegionName": "Amsterdam", + "Latitude": 52.372778, + "Longitude": 4.893611, + "Nodes": [{ + "Name": "14c", + "RegionID": 14, + "HostName": "derp14c.tailscale.com", + "IPv4": "176.58.93.147", + "IPv6": "2a00:dd80:3c::b09", + "CanPort80": true + }, { + "Name": "14d", + "RegionID": 14, + "HostName": "derp14d.tailscale.com", + "IPv4": "176.58.93.154", + "IPv6": "2a00:dd80:3c::3d5", + "CanPort80": true + }, { + "Name": "14b", + "RegionID": 14, + "HostName": "derp14b.tailscale.com", + "IPv4": "176.58.93.248", + "IPv6": "2a00:dd80:3c::807", + "CanPort80": true + }] + }, "15": { + "RegionID": 15, + "RegionCode": "jnb", + "RegionName": "Johannesburg", + "Latitude": -26.204444, + "Longitude": 28.045556, + "Nodes": [{ + "Name": "15c", + "RegionID": 15, + "HostName": "derp15c.tailscale.com", + "IPv4": "102.67.165.185", + "IPv6": "2c0f:edb0:0:10::b59", + "CanPort80": true + }, { + "Name": "15d", + "RegionID": 15, + "HostName": "derp15d.tailscale.com", + "IPv4": "102.67.165.36", + "IPv6": "2c0f:edb0:0:10::599", + "CanPort80": true + }, { + "Name": "15b", + "RegionID": 15, + "HostName": "derp15b.tailscale.com", + "IPv4": "102.67.165.90", + "IPv6": "2c0f:edb0:0:10::963", + "CanPort80": true + }] + }, "16": { + "RegionID": 16, + "RegionCode": "mia", + "RegionName": "Miami", + "Latitude": 25.78, + "Longitude": -80.21, + "Nodes": [{ + "Name": "16c", + "RegionID": 16, + "HostName": "derp16c.tailscale.com", + "IPv4": "192.73.243.229", + "IPv6": "2607:f740:17::4e4", + "CanPort80": true + }, { + "Name": "16d", + "RegionID": 16, + "HostName": "derp16d.tailscale.com", + "IPv4": "192.73.243.141", + "IPv6": "2607:f740:17::475", + "CanPort80": true + }, { + "Name": "16b", + "RegionID": 16, + "HostName": "derp16b.tailscale.com", + "IPv4": "192.73.243.135", + "IPv6": "2607:f740:17::476", + "CanPort80": true + }] + }, "17": { + "RegionID": 17, + "RegionCode": "lax", + "RegionName": "Los Angeles", + "Latitude": 34.05, + "Longitude": -118.25, + "Nodes": [{ + "Name": "17c", + "RegionID": 17, + "HostName": "derp17c.tailscale.com", + "IPv4": "208.111.40.12", + "IPv6": "2607:f740:c::10", + "CanPort80": true + }, { + "Name": "17d", + "RegionID": 17, + "HostName": "derp17d.tailscale.com", + "IPv4": "208.111.40.216", + "IPv6": "2607:f740:c::e1b", + "CanPort80": true + }, { + "Name": "17b", + "RegionID": 17, + "HostName": "derp17b.tailscale.com", + "IPv4": "192.73.244.245", + "IPv6": "2607:f740:c::646", + "CanPort80": true + }] + }, "18": { + "RegionID": 18, + "RegionCode": "par", + "RegionName": "Paris", + "Latitude": 48.856667, + "Longitude": 2.352222, + "Nodes": [{ + "Name": "18c", + "RegionID": 18, + "HostName": "derp18c.tailscale.com", + "IPv4": "176.58.90.207", + "IPv6": "2a00:dd80:3e::c19", + "CanPort80": true + }, { + "Name": "18d", + "RegionID": 18, + "HostName": "derp18d.tailscale.com", + "IPv4": "176.58.90.104", + "IPv6": "2a00:dd80:3e::f2e", + "CanPort80": true + }, { + "Name": "18b", + "RegionID": 18, + "HostName": "derp18b.tailscale.com", + "IPv4": "176.58.90.147", + "IPv6": "2a00:dd80:3e::363", + "CanPort80": true + }] + }, "19": { + "RegionID": 19, + "RegionCode": "mad", + "RegionName": "Madrid", + "Latitude": 40.416944, + "Longitude": -3.703333, + "Nodes": [{ + "Name": "19c", + "RegionID": 19, + "HostName": "derp19c.tailscale.com", + "IPv4": "45.159.97.61", + "IPv6": "2a00:dd80:14:10::20", + "CanPort80": true + }, { + "Name": "19d", + "RegionID": 19, + "HostName": "derp19d.tailscale.com", + "IPv4": "45.159.97.233", + "IPv6": "2a00:dd80:14:10::34a", + "CanPort80": true + }, { + "Name": "19b", + "RegionID": 19, + "HostName": "derp19b.tailscale.com", + "IPv4": "45.159.97.144", + "IPv6": "2a00:dd80:14:10::335", + "CanPort80": true + }] + }, "2": { + "RegionID": 2, + "RegionCode": "sfo", + "RegionName": "San Francisco", + "Latitude": 37.7775, + "Longitude": -122.416389, + "Nodes": [{ + "Name": "2e", + "RegionID": 2, + "HostName": "derp2e.tailscale.com", + "IPv4": "192.73.252.134", + "IPv6": "2607:f740:0:3f::44c", + "CanPort80": true + }, { + "Name": "2f", + "RegionID": 2, + "HostName": "derp2f.tailscale.com", + "IPv4": "208.111.34.178", + "IPv6": "2607:f740:0:3f::f4", + "CanPort80": true + }, { + "Name": "2d", + "RegionID": 2, + "HostName": "derp2d.tailscale.com", + "IPv4": "192.73.252.65", + "IPv6": "2607:f740:0:3f::287", + "CanPort80": true + }] + }, "20": { + "RegionID": 20, + "RegionCode": "hkg", + "RegionName": "Hong Kong", + "Latitude": 22.3193, + "Longitude": 114.1694, + "Nodes": [{ + "Name": "20c", + "RegionID": 20, + "HostName": "derp20c.tailscale.com", + "IPv4": "205.147.105.30", + "IPv6": "2403:2500:8000:1::5fb", + "CanPort80": true + }, { + "Name": "20d", + "RegionID": 20, + "HostName": "derp20d.tailscale.com", + "IPv4": "205.147.105.78", + "IPv6": "2403:2500:8000:1::e9a", + "CanPort80": true + }, { + "Name": "20b", + "RegionID": 20, + "HostName": "derp20b.tailscale.com", + "IPv4": "103.6.84.152", + "IPv6": "2403:2500:8000:1::ef6", + "CanPort80": true + }] + }, "21": { + "RegionID": 21, + "RegionCode": "tor", + "RegionName": "Toronto", + "Latitude": 43.741667, + "Longitude": -79.373333, + "Nodes": [{ + "Name": "21c", + "RegionID": 21, + "HostName": "derp21c.tailscale.com", + "IPv4": "162.248.221.215", + "IPv6": "2607:f740:50::f10", + "CanPort80": true + }, { + "Name": "21d", + "RegionID": 21, + "HostName": "derp21d.tailscale.com", + "IPv4": "162.248.221.248", + "IPv6": "2607:f740:50::ca4", + "CanPort80": true + }, { + "Name": "21b", + "RegionID": 21, + "HostName": "derp21b.tailscale.com", + "IPv4": "162.248.221.199", + "IPv6": "2607:f740:50::1d1", + "CanPort80": true + }] + }, "22": { + "RegionID": 22, + "RegionCode": "waw", + "RegionName": "Warsaw", + "Latitude": 52.23, + "Longitude": 21.011111, + "Nodes": [{ + "Name": "22c", + "RegionID": 22, + "HostName": "derp22c.tailscale.com", + "IPv4": "45.159.98.253", + "IPv6": "2a00:dd80:40:100::3f", + "CanPort80": true + }, { + "Name": "22d", + "RegionID": 22, + "HostName": "derp22d.tailscale.com", + "IPv4": "45.159.98.145", + "IPv6": "2a00:dd80:40:100::211", + "CanPort80": true + }, { + "Name": "22b", + "RegionID": 22, + "HostName": "derp22b.tailscale.com", + "IPv4": "45.159.98.196", + "IPv6": "2a00:dd80:40:100::316", + "CanPort80": true + }] + }, "23": { + "RegionID": 23, + "RegionCode": "dbi", + "RegionName": "Dubai", + "Latitude": 25.263056, + "Longitude": 55.297222, + "Nodes": [{ + "Name": "23c", + "RegionID": 23, + "HostName": "derp23c.tailscale.com", + "IPv4": "185.34.3.207", + "IPv6": "2a00:dd80:3f:100::a50", + "CanPort80": true + }, { + "Name": "23d", + "RegionID": 23, + "HostName": "derp23d.tailscale.com", + "IPv4": "185.34.3.75", + "IPv6": "2a00:dd80:3f:100::97e", + "CanPort80": true + }, { + "Name": "23b", + "RegionID": 23, + "HostName": "derp23b.tailscale.com", + "IPv4": "185.34.3.232", + "IPv6": "2a00:dd80:3f:100::76f", + "CanPort80": true + }] + }, "24": { + "RegionID": 24, + "RegionCode": "hnl", + "RegionName": "Honolulu", + "Latitude": 21.306944, + "Longitude": -157.858333, + "Nodes": [{ + "Name": "24c", + "RegionID": 24, + "HostName": "derp24c.tailscale.com", + "IPv4": "208.83.233.233", + "IPv6": "2001:19f0:c000:c591:5400:04ff:fe26:2c5f", + "CanPort80": true + }, { + "Name": "24d", + "RegionID": 24, + "HostName": "derp24d.tailscale.com", + "IPv4": "208.72.155.133", + "IPv6": "2001:19f0:c000:c564:5400:04ff:fe26:2ba8", + "CanPort80": true + }, { + "Name": "24b", + "RegionID": 24, + "HostName": "derp24b.tailscale.com", + "IPv4": "208.83.234.151", + "IPv6": "2001:19f0:c000:c586:5400:04ff:fe26:2ba6", + "CanPort80": true + }] + }, "25": { + "RegionID": 25, + "RegionCode": "nai", + "RegionName": "Nairobi", + "Latitude": -1.286389, + "Longitude": 36.817222, + "Nodes": [{ + "Name": "25c", + "RegionID": 25, + "HostName": "derp25c.tailscale.com", + "IPv4": "102.67.167.37", + "IPv6": "2c0f:edb0:2000:1::2c7", + "CanPort80": true + }, { + "Name": "25d", + "RegionID": 25, + "HostName": "derp25d.tailscale.com", + "IPv4": "102.67.167.188", + "IPv6": "2c0f:edb0:2000:1::188", + "CanPort80": true + }, { + "Name": "25b", + "RegionID": 25, + "HostName": "derp25b.tailscale.com", + "IPv4": "102.67.167.245", + "IPv6": "2c0f:edb0:2000:1::2e9", + "CanPort80": true + }] + }, "26": { + "RegionID": 26, + "RegionCode": "nue", + "RegionName": "Nuremberg", + "Latitude": 49.453889, + "Longitude": 11.0775, + "Nodes": [{ + "Name": "26c", + "RegionID": 26, + "HostName": "derp26c.tailscale.com", + "IPv4": "49.12.193.137", + "IPv6": "2a01:4f8:1c1c:5c70::1", + "CanPort80": true + }, { + "Name": "26d", + "RegionID": 26, + "HostName": "derp26d.tailscale.com", + "IPv4": "49.13.204.141", + "IPv6": "2a01:4f8:1c0c:7d06::1", + "CanPort80": true + }, { + "Name": "26b", + "RegionID": 26, + "HostName": "derp26b.tailscale.com", + "IPv4": "167.235.72.200", + "IPv6": "2a01:4f8:1c1c:47b6::1", + "CanPort80": true + }] + }, "27": { + "RegionID": 27, + "RegionCode": "iad", + "RegionName": "Ashburn", + "Latitude": 39.03, + "Longitude": -77.471111, + "Nodes": [{ + "Name": "27d", + "RegionID": 27, + "HostName": "derp27d.tailscale.com", + "IPv4": "178.156.152.106", + "IPv6": "2a01:4ff:f0:3c8e::1", + "CanPort80": true + }, { + "Name": "27c", + "RegionID": 27, + "HostName": "derp27c.tailscale.com", + "IPv4": "178.156.152.91", + "IPv6": "2a01:4ff:f0:3913::1", + "CanPort80": true + }, { + "Name": "27e", + "RegionID": 27, + "HostName": "derp27e.tailscale.com", + "IPv4": "178.156.134.232", + "IPv6": "2a01:4ff:f0:28d4::1", + "CanPort80": true + }, { + "Name": "27b", + "RegionID": 27, + "HostName": "derp27b.tailscale.com", + "IPv4": "5.161.218.233", + "IPv6": "2a01:4ff:f0:3db9::1", + "CanPort80": true + }] + }, "28": { + "RegionID": 28, + "RegionCode": "hel", + "RegionName": "Helsinki", + "Latitude": 60.170833, + "Longitude": 24.9375, + "Nodes": [{ + "Name": "28c", + "RegionID": 28, + "HostName": "derp28c.tailscale.com", + "IPv4": "95.217.2.165", + "IPv6": "2a01:4f9:c012:cd74::1", + "CanPort80": true + }, { + "Name": "28d", + "RegionID": 28, + "HostName": "derp28d.tailscale.com", + "IPv4": "157.180.28.32", + "IPv6": "2a01:4f9:c012:2e5b::1", + "CanPort80": true + }, { + "Name": "28b", + "RegionID": 28, + "HostName": "derp28b.tailscale.com", + "IPv4": "65.109.143.62", + "IPv6": "2a01:4f9:c012:d55c::1", + "CanPort80": true + }] + }, "3": { + "RegionID": 3, + "RegionCode": "sin", + "RegionName": "Singapore", + "Latitude": 1.3521, + "Longitude": 103.8198, + "Nodes": [{ + "Name": "3g", + "RegionID": 3, + "HostName": "derp3g.tailscale.com", + "IPv4": "172.237.72.79", + "IPv6": "2600:3c15::2000:adff:fe08:6fab", + "CanPort80": true + }, { + "Name": "3f", + "RegionID": 3, + "HostName": "derp3f.tailscale.com", + "IPv4": "172.237.72.8", + "IPv6": "2600:3c15::2000:53ff:fe48:a668", + "CanPort80": true + }, { + "Name": "3h", + "RegionID": 3, + "HostName": "derp3h.tailscale.com", + "IPv4": "172.237.66.30", + "IPv6": "2600:3c15::2000:3dff:fe44:50aa", + "CanPort80": true + }, { + "Name": "3e", + "RegionID": 3, + "HostName": "derp3e.tailscale.com", + "IPv4": "172.237.72.43", + "IPv6": "2600:3c15::2000:6cff:fee4:d799", + "CanPort80": true + }] + }, "4": { + "RegionID": 4, + "RegionCode": "fra", + "RegionName": "Frankfurt", + "Latitude": 50.1109, + "Longitude": 8.6821, + "Nodes": [{ + "Name": "4h", + "RegionID": 4, + "HostName": "derp4h.tailscale.com", + "IPv4": "185.40.234.77", + "IPv6": "2a00:dd80:20::bcf", + "CanPort80": true + }, { + "Name": "4i", + "RegionID": 4, + "HostName": "derp4i.tailscale.com", + "IPv4": "185.40.234.53", + "IPv6": "2a00:dd80:20::8a6", + "CanPort80": true + }, { + "Name": "4g", + "RegionID": 4, + "HostName": "derp4g.tailscale.com", + "IPv4": "185.40.234.113", + "IPv6": "2a00:dd80:20::8f", + "CanPort80": true + }, { + "Name": "4j", + "RegionID": 4, + "HostName": "derp4j.tailscale.com", + "IPv4": "185.40.234.176", + "IPv6": "2a00:dd80:20::e67", + "CanPort80": true + }, { + "Name": "4f", + "RegionID": 4, + "HostName": "derp4f.tailscale.com", + "IPv4": "185.40.234.219", + "IPv6": "2a00:dd80:20::a25", + "CanPort80": true + }] + }, "5": { + "RegionID": 5, + "RegionCode": "syd", + "RegionName": "Sydney", + "Latitude": -33.867778, + "Longitude": 151.21, + "Nodes": [{ + "Name": "5f", + "RegionID": 5, + "HostName": "derp5f.tailscale.com", + "IPv4": "172.105.166.103", + "IPv6": "2400:8907::2000:ccff:fe1f:80da", + "CanPort80": true + }, { + "Name": "5g", + "RegionID": 5, + "HostName": "derp5g.tailscale.com", + "IPv4": "172.105.169.57", + "IPv6": "2400:8907::2000:2fff:fea7:57f4", + "CanPort80": true + }, { + "Name": "5e", + "RegionID": 5, + "HostName": "derp5e.tailscale.com", + "IPv4": "172.105.179.230", + "IPv6": "2400:8907::2000:ceff:fe8d:4f4e", + "CanPort80": true + }] + }, "6": { + "RegionID": 6, + "RegionCode": "blr", + "RegionName": "Bengaluru", + "Latitude": 12.9716, + "Longitude": 77.5946, + "Nodes": [{ + "Name": "6a", + "RegionID": 6, + "HostName": "derp6.tailscale.com", + "IPv4": "68.183.90.120", + "IPv6": "2400:6180:100:d0::982:d001", + "CanPort80": true + }] + }, "7": { + "RegionID": 7, + "RegionCode": "tok", + "RegionName": "Tokyo", + "Latitude": 35.6764, + "Longitude": 139.65, + "Nodes": [{ + "Name": "7g", + "RegionID": 7, + "HostName": "derp7g.tailscale.com", + "IPv4": "172.238.6.179", + "IPv6": "2600:3c18::2000:3fff:fe80:3ebd", + "CanPort80": true + }, { + "Name": "7f", + "RegionID": 7, + "HostName": "derp7f.tailscale.com", + "IPv4": "172.238.6.34", + "IPv6": "2600:3c18::2000:acff:fe8e:3ed5", + "CanPort80": true + }, { + "Name": "7h", + "RegionID": 7, + "HostName": "derp7h.tailscale.com", + "IPv4": "172.237.28.183", + "IPv6": "2600:3c18::2000:b1ff:fea9:4560", + "CanPort80": true + }, { + "Name": "7e", + "RegionID": 7, + "HostName": "derp7e.tailscale.com", + "IPv4": "172.238.6.180", + "IPv6": "2600:3c18::2000:60ff:fe0f:6e83", + "STUNOnly": true, + "CanPort80": true + }] + }, "8": { + "RegionID": 8, + "RegionCode": "lhr", + "RegionName": "London", + "Latitude": 51.5072, + "Longitude": 0.1276, + "Nodes": [{ + "Name": "8f", + "RegionID": 8, + "HostName": "derp8f.tailscale.com", + "IPv4": "176.58.88.183", + "IPv6": "2a00:dd80:3a::dfa", + "CanPort80": true + }, { + "Name": "8g", + "RegionID": 8, + "HostName": "derp8g.tailscale.com", + "IPv4": "176.58.92.254", + "IPv6": "2a00:dd80:3a::ed", + "CanPort80": true + }, { + "Name": "8e", + "RegionID": 8, + "HostName": "derp8e.tailscale.com", + "IPv4": "176.58.92.144", + "IPv6": "2a00:dd80:3a::b33", + "CanPort80": true + }] + }, "9": { + "RegionID": 9, + "RegionCode": "dfw", + "RegionName": "Dallas", + "Latitude": 32.779167, + "Longitude": -96.808889, + "Nodes": [{ + "Name": "9e", + "RegionID": 9, + "HostName": "derp9e.tailscale.com", + "IPv4": "192.73.248.83", + "IPv6": "2607:f740:100::359", + "CanPort80": true + }, { + "Name": "9f", + "RegionID": 9, + "HostName": "derp9f.tailscale.com", + "IPv4": "209.177.156.197", + "IPv6": "2607:f740:100::cad", + "CanPort80": true + }, { + "Name": "9d", + "RegionID": 9, + "HostName": "derp9d.tailscale.com", + "IPv4": "209.177.156.94", + "IPv6": "2607:f740:100::c05", + "CanPort80": true + }] + }}}, + "DisplayMessages": null, + "TKAEnabled": false, + "TKAHead": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Domain": "odin@example.com", + "DomainAuditLogID": "", + "UserProfiles": {"1260082990019555": { + "ID": 1260082990019555, + "LoginName": "tagged-devices", + "DisplayName": "Tagged Devices" + }, "4156223528223174": { + "ID": 4156223528223174, + "LoginName": "odin@example.com", + "DisplayName": "odin" + }} + } + }} +}