mirror of
https://github.com/juanfont/headscale
synced 2026-04-25 17:15:33 +02:00
policy/v2: add data-driven grants compatibility test with Tailscale SaaS captures
Rename tailscale_compat_test.go to tailscale_acl_compat_test.go to make room for the grants compat test. Add 237 GRANT-*.json golden test files captured from Tailscale SaaS and a data-driven test driver that compares headscale's grant filter compilation against real Tailscale behavior. Updates #2180
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
// and improve our policy implementation.
|
||||
// This file is NOT intended for developer/humans to change and should be
|
||||
// consider a "black box" test suite.
|
||||
|
||||
package v2
|
||||
|
||||
import (
|
||||
897
hscontrol/policy/v2/tailscale_grants_compat_test.go
Normal file
897
hscontrol/policy/v2/tailscale_grants_compat_test.go
Normal file
@@ -0,0 +1,897 @@
|
||||
// This file is "generated" by Claude.
|
||||
// It contains a data-driven test that reads 237 GRANT-*.json test files
|
||||
// captured from Tailscale SaaS. Each file contains:
|
||||
// - A policy with grants (and optionally ACLs)
|
||||
// - The expected packet_filter_rules for each of 8 test nodes
|
||||
// - Or an error response for invalid policies
|
||||
//
|
||||
// The test loads each JSON file, applies the policy through headscale's
|
||||
// grants engine, and compares the output against Tailscale's actual behavior.
|
||||
//
|
||||
// Tests that are known to fail due to unimplemented features or known
|
||||
// differences are skipped with a TODO comment explaining the root cause.
|
||||
// As headscale's grants implementation improves, tests should be removed
|
||||
// from the skip list.
|
||||
//
|
||||
// Test data source: testdata/grant_results/GRANT-*.json
|
||||
// Captured from: Tailscale SaaS API + tailscale debug localapi
|
||||
|
||||
package v2
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/google/go-cmp/cmp/cmpopts"
|
||||
"github.com/juanfont/headscale/hscontrol/policy/policyutil"
|
||||
"github.com/juanfont/headscale/hscontrol/types"
|
||||
"github.com/stretchr/testify/require"
|
||||
"gorm.io/gorm"
|
||||
"tailscale.com/tailcfg"
|
||||
)
|
||||
|
||||
// grantTestFile represents the JSON structure of a captured grant test file.
|
||||
type grantTestFile struct {
|
||||
TestID string `json:"test_id"`
|
||||
Error bool `json:"error"`
|
||||
Input struct {
|
||||
FullPolicy json.RawMessage `json:"full_policy"`
|
||||
APIResponseCode int `json:"api_response_code"`
|
||||
APIResponseBody *struct {
|
||||
Message string `json:"message"`
|
||||
} `json:"api_response_body"`
|
||||
} `json:"input"`
|
||||
Topology struct {
|
||||
Nodes map[string]struct {
|
||||
Hostname string `json:"hostname"`
|
||||
Tags []string `json:"tags"`
|
||||
IPv4 string `json:"ipv4"`
|
||||
IPv6 string `json:"ipv6"`
|
||||
} `json:"nodes"`
|
||||
} `json:"topology"`
|
||||
Captures map[string]struct {
|
||||
PacketFilterRules json.RawMessage `json:"packet_filter_rules"`
|
||||
} `json:"captures"`
|
||||
}
|
||||
|
||||
// setupGrantsCompatUsers returns the 3 test users for grants compatibility tests.
|
||||
// Email addresses use @example.com domain, matching the converted Tailscale policy format.
|
||||
func setupGrantsCompatUsers() types.Users {
|
||||
return types.Users{
|
||||
{Model: gorm.Model{ID: 1}, Name: "kratail2tid", Email: "kratail2tid@example.com"},
|
||||
{Model: gorm.Model{ID: 2}, Name: "kristoffer", Email: "kristoffer@example.com"},
|
||||
{Model: gorm.Model{ID: 3}, Name: "monitorpasskeykradalby", Email: "monitorpasskeykradalby@example.com"},
|
||||
}
|
||||
}
|
||||
|
||||
// setupGrantsCompatNodes returns the 8 test nodes for grants compatibility tests.
|
||||
// The node configuration matches the Tailscale test environment:
|
||||
// - 3 user-owned nodes (user1, user-kris, user-mon)
|
||||
// - 5 tagged nodes (tagged-server, tagged-prod, tagged-client, subnet-router, exit-node)
|
||||
func setupGrantsCompatNodes(users types.Users) types.Nodes {
|
||||
nodeUser1 := &types.Node{
|
||||
ID: 1,
|
||||
GivenName: "user1",
|
||||
User: &users[0],
|
||||
UserID: &users[0].ID,
|
||||
IPv4: ptrAddr("100.90.199.68"),
|
||||
IPv6: ptrAddr("fd7a:115c:a1e0::2d01:c747"),
|
||||
Hostinfo: &tailcfg.Hostinfo{},
|
||||
}
|
||||
|
||||
nodeUserKris := &types.Node{
|
||||
ID: 2,
|
||||
GivenName: "user-kris",
|
||||
User: &users[1],
|
||||
UserID: &users[1].ID,
|
||||
IPv4: ptrAddr("100.110.121.96"),
|
||||
IPv6: ptrAddr("fd7a:115c:a1e0::1737:7960"),
|
||||
Hostinfo: &tailcfg.Hostinfo{},
|
||||
}
|
||||
|
||||
nodeUserMon := &types.Node{
|
||||
ID: 3,
|
||||
GivenName: "user-mon",
|
||||
User: &users[2],
|
||||
UserID: &users[2].ID,
|
||||
IPv4: ptrAddr("100.103.90.82"),
|
||||
IPv6: ptrAddr("fd7a:115c:a1e0::9e37:5a52"),
|
||||
Hostinfo: &tailcfg.Hostinfo{},
|
||||
}
|
||||
|
||||
nodeTaggedServer := &types.Node{
|
||||
ID: 4,
|
||||
GivenName: "tagged-server",
|
||||
IPv4: ptrAddr("100.108.74.26"),
|
||||
IPv6: ptrAddr("fd7a:115c:a1e0::b901:4a87"),
|
||||
Tags: []string{"tag:server"},
|
||||
Hostinfo: &tailcfg.Hostinfo{},
|
||||
}
|
||||
|
||||
nodeTaggedProd := &types.Node{
|
||||
ID: 5,
|
||||
GivenName: "tagged-prod",
|
||||
IPv4: ptrAddr("100.103.8.15"),
|
||||
IPv6: ptrAddr("fd7a:115c:a1e0::5b37:80f"),
|
||||
Tags: []string{"tag:prod"},
|
||||
Hostinfo: &tailcfg.Hostinfo{},
|
||||
}
|
||||
|
||||
nodeTaggedClient := &types.Node{
|
||||
ID: 6,
|
||||
GivenName: "tagged-client",
|
||||
IPv4: ptrAddr("100.83.200.69"),
|
||||
IPv6: ptrAddr("fd7a:115c:a1e0::c537:c845"),
|
||||
Tags: []string{"tag:client"},
|
||||
Hostinfo: &tailcfg.Hostinfo{},
|
||||
}
|
||||
|
||||
nodeSubnetRouter := &types.Node{
|
||||
ID: 7,
|
||||
GivenName: "subnet-router",
|
||||
IPv4: ptrAddr("100.92.142.61"),
|
||||
IPv6: ptrAddr("fd7a:115c:a1e0::3e37:8e3d"),
|
||||
Tags: []string{"tag:router"},
|
||||
Hostinfo: &tailcfg.Hostinfo{},
|
||||
}
|
||||
|
||||
nodeExitNode := &types.Node{
|
||||
ID: 8,
|
||||
GivenName: "exit-node",
|
||||
IPv4: ptrAddr("100.85.66.106"),
|
||||
IPv6: ptrAddr("fd7a:115c:a1e0::7c37:426a"),
|
||||
Tags: []string{"tag:exit"},
|
||||
Hostinfo: &tailcfg.Hostinfo{},
|
||||
}
|
||||
|
||||
return types.Nodes{
|
||||
nodeUser1,
|
||||
nodeUserKris,
|
||||
nodeUserMon,
|
||||
nodeTaggedServer,
|
||||
nodeTaggedProd,
|
||||
nodeTaggedClient,
|
||||
nodeSubnetRouter,
|
||||
nodeExitNode,
|
||||
}
|
||||
}
|
||||
|
||||
// findGrantsNode finds a node by its GivenName in the grants test environment.
|
||||
func findGrantsNode(nodes types.Nodes, name string) *types.Node {
|
||||
for _, n := range nodes {
|
||||
if n.GivenName == name {
|
||||
return n
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// convertPolicyUserEmails converts Tailscale SaaS user email formats to
|
||||
// headscale-compatible @example.com format in the raw policy JSON.
|
||||
//
|
||||
// Tailscale uses provider-specific email formats:
|
||||
// - kratail2tid@passkey (passkey auth)
|
||||
// - kristoffer@dalby.cc (email auth)
|
||||
// - monitorpasskeykradalby@passkey (passkey auth)
|
||||
//
|
||||
// Headscale resolves users by Email field, so we convert all to @example.com.
|
||||
func convertPolicyUserEmails(policyJSON []byte) []byte {
|
||||
s := string(policyJSON)
|
||||
s = strings.ReplaceAll(s, "kratail2tid@passkey", "kratail2tid@example.com")
|
||||
s = strings.ReplaceAll(s, "kristoffer@dalby.cc", "kristoffer@example.com")
|
||||
s = strings.ReplaceAll(s, "monitorpasskeykradalby@passkey", "monitorpasskeykradalby@example.com")
|
||||
|
||||
return []byte(s)
|
||||
}
|
||||
|
||||
// loadGrantTestFile loads and parses a single grant test JSON file.
|
||||
func loadGrantTestFile(t *testing.T, path string) grantTestFile {
|
||||
t.Helper()
|
||||
|
||||
content, err := os.ReadFile(path)
|
||||
require.NoError(t, err, "failed to read test file %s", path)
|
||||
|
||||
var tf grantTestFile
|
||||
|
||||
err = json.Unmarshal(content, &tf)
|
||||
require.NoError(t, err, "failed to parse test file %s", path)
|
||||
|
||||
return tf
|
||||
}
|
||||
|
||||
// Skip categories document WHY tests are expected to fail and WHAT needs to be
|
||||
// implemented to fix them. Tests are grouped by root cause to identify high-impact
|
||||
// changes.
|
||||
//
|
||||
// Impact summary (highest first):
|
||||
//
|
||||
// SRCIPS_FORMAT - 125 tests: Fix SrcIPs to use CGNAT split ranges
|
||||
// CAPGRANT_COMPILATION - 41 tests: Implement app->CapGrant FilterRule compilation
|
||||
// ERROR_VALIDATION_GAP - 14 tests: Implement missing grant validation rules
|
||||
// CAPGRANT_AND_SRCIPS_FORMAT - 9 tests: Both CapGrant compilation + SrcIPs format
|
||||
// VIA_AND_SRCIPS_FORMAT - 4 tests: Via route compilation + SrcIPs format
|
||||
// AUTOGROUP_DANGER_ALL - 3 tests: Implement autogroup:danger-all support
|
||||
// VALIDATION_STRICTNESS - 2 tests: headscale too strict (rejects what Tailscale accepts)
|
||||
//
|
||||
// Total: 193 tests skipped, 19 tests expected to pass.
|
||||
var grantSkipReasons = map[string]string{
|
||||
// ========================================================================
|
||||
// SRCIPS_FORMAT (125 tests)
|
||||
//
|
||||
// TODO: Implement CGNAT split range generation for SrcIPs.
|
||||
//
|
||||
// headscale currently generates ["100.64.0.0/10", "fd7a:115c:a1e0::/48"]
|
||||
// for wildcard source matches. Tailscale generates split CGNAT ranges that
|
||||
// exclude the ChromeOS VM range 100.115.92.0/23, and includes advertised
|
||||
// subnet routes (e.g., "10.33.0.0/16") in the SrcIPs list.
|
||||
//
|
||||
// Additionally, headscale uses CIDR notation for host IPs in DstPorts
|
||||
// (e.g., "100.108.74.26/32") while Tailscale uses bare IPs
|
||||
// (e.g., "100.108.74.26").
|
||||
//
|
||||
// Fixing SrcIPs generation and DstPorts IP format would resolve all 125
|
||||
// tests in this category.
|
||||
// ========================================================================
|
||||
|
||||
// J-series: Protocol-specific IP grants
|
||||
"GRANT-J1": "SRCIPS_FORMAT",
|
||||
"GRANT-J2": "SRCIPS_FORMAT",
|
||||
"GRANT-J3": "SRCIPS_FORMAT",
|
||||
"GRANT-J4": "SRCIPS_FORMAT",
|
||||
"GRANT-J5": "SRCIPS_FORMAT",
|
||||
"GRANT-J6": "SRCIPS_FORMAT",
|
||||
|
||||
// K-series: Various IP grant patterns
|
||||
"GRANT-K1": "SRCIPS_FORMAT",
|
||||
"GRANT-K2": "SRCIPS_FORMAT",
|
||||
"GRANT-K4": "SRCIPS_FORMAT",
|
||||
"GRANT-K14": "SRCIPS_FORMAT",
|
||||
"GRANT-K15": "SRCIPS_FORMAT",
|
||||
"GRANT-K16": "SRCIPS_FORMAT",
|
||||
"GRANT-K17": "SRCIPS_FORMAT",
|
||||
"GRANT-K20": "SRCIPS_FORMAT",
|
||||
"GRANT-K21": "SRCIPS_FORMAT",
|
||||
"GRANT-K22": "SRCIPS_FORMAT",
|
||||
"GRANT-K26": "SRCIPS_FORMAT",
|
||||
|
||||
// P01-series: Wildcard and basic IP grants
|
||||
"GRANT-P01_1": "SRCIPS_FORMAT",
|
||||
"GRANT-P01_2": "SRCIPS_FORMAT",
|
||||
"GRANT-P01_3": "SRCIPS_FORMAT",
|
||||
"GRANT-P01_4": "SRCIPS_FORMAT",
|
||||
|
||||
// P02-series: Source targeting (user, group, tag)
|
||||
"GRANT-P02_1": "SRCIPS_FORMAT",
|
||||
"GRANT-P02_2": "SRCIPS_FORMAT",
|
||||
"GRANT-P02_3": "SRCIPS_FORMAT",
|
||||
"GRANT-P02_4": "SRCIPS_FORMAT",
|
||||
"GRANT-P02_5_CORRECT": "SRCIPS_FORMAT",
|
||||
"GRANT-P02_5_NAIVE": "SRCIPS_FORMAT",
|
||||
|
||||
// P03-series: Destination targeting
|
||||
"GRANT-P03_1": "SRCIPS_FORMAT",
|
||||
"GRANT-P03_2": "SRCIPS_FORMAT",
|
||||
"GRANT-P03_3": "SRCIPS_FORMAT",
|
||||
"GRANT-P03_4": "SRCIPS_FORMAT",
|
||||
|
||||
// P04-series: autogroup:member grants
|
||||
"GRANT-P04_1": "SRCIPS_FORMAT",
|
||||
"GRANT-P04_2": "SRCIPS_FORMAT",
|
||||
|
||||
// P05-series: Tag-to-tag grants
|
||||
"GRANT-P05_1": "SRCIPS_FORMAT",
|
||||
"GRANT-P05_2": "SRCIPS_FORMAT",
|
||||
"GRANT-P05_3": "SRCIPS_FORMAT",
|
||||
|
||||
// P06-series: IP protocol grants
|
||||
"GRANT-P06_1": "SRCIPS_FORMAT",
|
||||
"GRANT-P06_2": "SRCIPS_FORMAT",
|
||||
"GRANT-P06_3": "SRCIPS_FORMAT",
|
||||
"GRANT-P06_4": "SRCIPS_FORMAT",
|
||||
"GRANT-P06_5": "SRCIPS_FORMAT",
|
||||
"GRANT-P06_6": "SRCIPS_FORMAT",
|
||||
"GRANT-P06_7": "SRCIPS_FORMAT",
|
||||
|
||||
// P08-series: Multiple grants / rule merging
|
||||
"GRANT-P08_1": "SRCIPS_FORMAT",
|
||||
"GRANT-P08_2": "SRCIPS_FORMAT",
|
||||
"GRANT-P08_4": "SRCIPS_FORMAT",
|
||||
"GRANT-P08_5": "SRCIPS_FORMAT",
|
||||
"GRANT-P08_6": "SRCIPS_FORMAT",
|
||||
"GRANT-P08_7": "SRCIPS_FORMAT",
|
||||
"GRANT-P08_8": "SRCIPS_FORMAT",
|
||||
|
||||
// P09-series: ACL-to-grant conversion equivalence tests
|
||||
"GRANT-P09_1A": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_1B": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_1C": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_1D": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_1E": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_2A_CORRECT": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_2A_NAIVE": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_2B_CORRECT": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_2B_NAIVE": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_2C": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_3A": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_3B": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_3C": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_4A": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_4B": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_4C": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_4D": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_4E": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_4F": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_4G": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_5A": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_5B": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_5C_NAIVE": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_6A": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_6C": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_6D": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_7A": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_7B_NAIVE": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_7C": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_7D_NAIVE": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_8A": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_8B": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_8C": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_9A": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_9B": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_9C": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_10A": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_10B": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_10C": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_10D": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_11A": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_11B": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_11C_NAIVE": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_11D": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_12A": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_12B": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_13E": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_13F": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_13G": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_14A": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_14B": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_14C": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_14D": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_14E": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_14F": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_14G": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_14H": "SRCIPS_FORMAT",
|
||||
"GRANT-P09_14I": "SRCIPS_FORMAT",
|
||||
|
||||
// P10-series: Host alias grants
|
||||
"GRANT-P10_1": "SRCIPS_FORMAT",
|
||||
"GRANT-P10_2": "SRCIPS_FORMAT",
|
||||
"GRANT-P10_3": "SRCIPS_FORMAT",
|
||||
"GRANT-P10_4": "SRCIPS_FORMAT",
|
||||
|
||||
// P11-series: autogroup:tagged grants
|
||||
"GRANT-P11_1": "SRCIPS_FORMAT",
|
||||
"GRANT-P11_2": "SRCIPS_FORMAT",
|
||||
|
||||
// P13-series: CIDR destination grants
|
||||
"GRANT-P13_1": "SRCIPS_FORMAT",
|
||||
"GRANT-P13_2": "SRCIPS_FORMAT",
|
||||
"GRANT-P13_3": "SRCIPS_FORMAT",
|
||||
"GRANT-P13_4": "SRCIPS_FORMAT",
|
||||
|
||||
// P15-series: Empty/no-match grants
|
||||
"GRANT-P15_1": "SRCIPS_FORMAT",
|
||||
"GRANT-P15_3": "SRCIPS_FORMAT",
|
||||
|
||||
// ========================================================================
|
||||
// CAPGRANT_COMPILATION (49 tests)
|
||||
//
|
||||
// TODO: Implement app capability grant -> CapGrant FilterRule compilation.
|
||||
//
|
||||
// When a grant specifies an "app" field (application capabilities), it
|
||||
// should produce a FilterRule with CapGrant entries instead of DstPorts.
|
||||
// headscale currently does not compile app grants into CapGrant FilterRules,
|
||||
// producing empty output where Tailscale produces CapGrant rules.
|
||||
//
|
||||
// Each CapGrant FilterRule contains:
|
||||
// - SrcIPs: source IP ranges (same format as DstPorts rules)
|
||||
// - CapGrant: []tailcfg.CapGrant with Dsts (destination IPs) and
|
||||
// CapMap (capability name -> JSON values)
|
||||
//
|
||||
// Fixing CapGrant compilation would resolve all 41 tests in this category.
|
||||
// ========================================================================
|
||||
|
||||
// A-series: Basic app capability grants
|
||||
"GRANT-A1": "CAPGRANT_COMPILATION",
|
||||
"GRANT-A3": "CAPGRANT_COMPILATION",
|
||||
"GRANT-A4": "CAPGRANT_COMPILATION",
|
||||
"GRANT-A6": "CAPGRANT_COMPILATION",
|
||||
|
||||
// B-series: Specific capability types (kubernetes, drive, etc.)
|
||||
"GRANT-B1": "CAPGRANT_COMPILATION",
|
||||
"GRANT-B2": "CAPGRANT_COMPILATION",
|
||||
"GRANT-B3": "CAPGRANT_COMPILATION",
|
||||
"GRANT-B4": "CAPGRANT_COMPILATION",
|
||||
"GRANT-B5": "CAPGRANT_COMPILATION",
|
||||
|
||||
// C-series: Capability values and multiple caps
|
||||
"GRANT-C1": "CAPGRANT_COMPILATION",
|
||||
"GRANT-C2": "CAPGRANT_COMPILATION",
|
||||
"GRANT-C3": "CAPGRANT_COMPILATION",
|
||||
"GRANT-C4": "CAPGRANT_COMPILATION",
|
||||
"GRANT-C5": "CAPGRANT_COMPILATION",
|
||||
"GRANT-C6": "CAPGRANT_COMPILATION",
|
||||
|
||||
// D-series: Source targeting with app caps
|
||||
"GRANT-D1": "CAPGRANT_COMPILATION",
|
||||
"GRANT-D2": "CAPGRANT_COMPILATION",
|
||||
"GRANT-D3": "CAPGRANT_COMPILATION",
|
||||
"GRANT-D4": "CAPGRANT_COMPILATION",
|
||||
"GRANT-D5": "CAPGRANT_COMPILATION",
|
||||
"GRANT-D6": "CAPGRANT_COMPILATION",
|
||||
"GRANT-D7": "CAPGRANT_COMPILATION",
|
||||
|
||||
// E-series: Destination targeting with app caps
|
||||
"GRANT-E1": "CAPGRANT_COMPILATION",
|
||||
"GRANT-E2": "CAPGRANT_COMPILATION",
|
||||
"GRANT-E4": "CAPGRANT_COMPILATION",
|
||||
"GRANT-E5": "CAPGRANT_COMPILATION",
|
||||
"GRANT-E6": "CAPGRANT_COMPILATION",
|
||||
"GRANT-E7": "CAPGRANT_COMPILATION",
|
||||
"GRANT-E8": "CAPGRANT_COMPILATION",
|
||||
|
||||
// G-series: Group-based source with app caps (pure capgrant)
|
||||
"GRANT-G1": "CAPGRANT_COMPILATION",
|
||||
"GRANT-G2": "CAPGRANT_COMPILATION",
|
||||
"GRANT-G3": "CAPGRANT_COMPILATION",
|
||||
"GRANT-G6": "CAPGRANT_COMPILATION",
|
||||
|
||||
// H-series: Edge cases with app caps
|
||||
"GRANT-H2": "CAPGRANT_COMPILATION",
|
||||
"GRANT-H6": "CAPGRANT_COMPILATION",
|
||||
|
||||
// K-series: Various app cap patterns
|
||||
"GRANT-K11": "CAPGRANT_COMPILATION",
|
||||
"GRANT-K18": "CAPGRANT_COMPILATION",
|
||||
"GRANT-K19": "CAPGRANT_COMPILATION",
|
||||
"GRANT-K24": "CAPGRANT_COMPILATION",
|
||||
"GRANT-K25": "CAPGRANT_COMPILATION",
|
||||
"GRANT-K27": "CAPGRANT_COMPILATION",
|
||||
|
||||
// V-series: App caps on specific tags, drive cap, autogroup:self app
|
||||
"GRANT-V02": "CAPGRANT_COMPILATION: app grant on tag:exit — CapGrant with exit-node IPs as Dsts not compiled",
|
||||
"GRANT-V03": "CAPGRANT_COMPILATION: app grant on tag:router — CapGrant with router IPs as Dsts not compiled",
|
||||
"GRANT-V06": "CAPGRANT_COMPILATION: multi-dst app grant on [tag:server, tag:exit] — per-node CapGrant not compiled",
|
||||
"GRANT-V19": "CAPGRANT_COMPILATION: drive cap on tag:exit — drive CapGrant + reverse drive-sharer not compiled",
|
||||
"GRANT-V20": "CAPGRANT_COMPILATION: kubernetes cap on tag:router — CapGrant not compiled",
|
||||
"GRANT-V25": "CAPGRANT_COMPILATION: autogroup:self app grant — self-targeting CapGrant per member not compiled",
|
||||
|
||||
// ========================================================================
|
||||
// CAPGRANT_COMPILATION_AND_SRCIPS_FORMAT (11 tests)
|
||||
//
|
||||
// TODO: These tests have BOTH DstPorts and CapGrant FilterRules.
|
||||
// They require both CapGrant compilation AND SrcIPs format fixes.
|
||||
// Grants with both "ip" and "app" fields produce two separate FilterRules:
|
||||
// one with DstPorts (from "ip") and one with CapGrant (from "app").
|
||||
//
|
||||
// V09/V10: headscale currently rejects mixed ip+app grants with
|
||||
// "grants cannot specify both 'ip' and 'app' fields", but Tailscale
|
||||
// accepts them and produces two FilterRules per grant.
|
||||
// ========================================================================
|
||||
|
||||
// F-series: Mixed ip+app grants
|
||||
"GRANT-F1": "CAPGRANT_COMPILATION_AND_SRCIPS_FORMAT",
|
||||
"GRANT-F2": "CAPGRANT_COMPILATION_AND_SRCIPS_FORMAT",
|
||||
"GRANT-F3": "CAPGRANT_COMPILATION_AND_SRCIPS_FORMAT",
|
||||
"GRANT-F4": "CAPGRANT_COMPILATION_AND_SRCIPS_FORMAT",
|
||||
|
||||
// G-series: Group-based mixed grants
|
||||
"GRANT-G4": "CAPGRANT_COMPILATION_AND_SRCIPS_FORMAT",
|
||||
"GRANT-G5": "CAPGRANT_COMPILATION_AND_SRCIPS_FORMAT",
|
||||
|
||||
// K-series: Mixed patterns
|
||||
"GRANT-K3": "CAPGRANT_COMPILATION_AND_SRCIPS_FORMAT",
|
||||
"GRANT-K5": "CAPGRANT_COMPILATION_AND_SRCIPS_FORMAT",
|
||||
"GRANT-K28": "CAPGRANT_COMPILATION_AND_SRCIPS_FORMAT",
|
||||
|
||||
// V-series: Mixed ip+app on specific tags
|
||||
"GRANT-V09": "CAPGRANT_COMPILATION_AND_SRCIPS_FORMAT: mixed ip+app on tag:exit — headscale rejects, Tailscale produces DstPorts + CapGrant",
|
||||
"GRANT-V10": "CAPGRANT_COMPILATION_AND_SRCIPS_FORMAT: mixed ip+app on tag:router — headscale rejects, Tailscale produces DstPorts + CapGrant",
|
||||
|
||||
// ========================================================================
|
||||
// VIA_COMPILATION (3 tests)
|
||||
//
|
||||
// TODO: Implement via route compilation in filter rules.
|
||||
//
|
||||
// Via routes with specific (non-wildcard) sources produce DstPorts rules
|
||||
// with correctly restricted SrcIPs. These tests have no SrcIPs format
|
||||
// issue because they use specific src identities (tags, groups, members).
|
||||
// ========================================================================
|
||||
"GRANT-V11": "VIA_COMPILATION: via tag:router + src:tag:client — SrcIPs = client IPs only",
|
||||
"GRANT-V12": "VIA_COMPILATION: via tag:router + src:autogroup:member — SrcIPs = member IPs",
|
||||
"GRANT-V13": "VIA_COMPILATION: via tag:router + src:group:developers + tcp:80,443 — group SrcIPs + specific ports",
|
||||
|
||||
// ========================================================================
|
||||
// VIA_COMPILATION_AND_SRCIPS_FORMAT (7 tests)
|
||||
//
|
||||
// TODO: Implement via route compilation in filter rules.
|
||||
//
|
||||
// Via routes ("via" field in grants) specify that traffic to a destination
|
||||
// CIDR should be routed through a specific tagged subnet router. The via
|
||||
// field is currently parsed and validated but NOT compiled into FilterRules.
|
||||
//
|
||||
// These tests also have SrcIPs format differences (wildcard src expands
|
||||
// to split CGNAT ranges).
|
||||
// ========================================================================
|
||||
"GRANT-I1": "VIA_COMPILATION_AND_SRCIPS_FORMAT",
|
||||
"GRANT-I2": "VIA_COMPILATION_AND_SRCIPS_FORMAT",
|
||||
"GRANT-I3": "VIA_COMPILATION_AND_SRCIPS_FORMAT",
|
||||
"GRANT-K13": "VIA_COMPILATION_AND_SRCIPS_FORMAT",
|
||||
"GRANT-V17": "VIA_COMPILATION_AND_SRCIPS_FORMAT: via tag:router + multi-dst — unadvertised subnets silently dropped",
|
||||
"GRANT-V21": "VIA_COMPILATION_AND_SRCIPS_FORMAT: via [tag:router, tag:exit] — only advertising nodes get rules",
|
||||
"GRANT-V23": "VIA_COMPILATION_AND_SRCIPS_FORMAT: via tag:router + tcp:22,80,443 — via + multiple ports",
|
||||
|
||||
// ========================================================================
|
||||
// AUTOGROUP_DANGER_ALL (3 tests)
|
||||
//
|
||||
// TODO: Implement autogroup:danger-all support.
|
||||
//
|
||||
// autogroup:danger-all matches ALL IPs including non-Tailscale addresses.
|
||||
// When used as a source, it should expand to 0.0.0.0/0 and ::/0.
|
||||
// When used as a destination, Tailscale rejects it with an error.
|
||||
//
|
||||
// GRANT-K6: autogroup:danger-all as src (success test, produces rules)
|
||||
// GRANT-K7: autogroup:danger-all as dst (error: "cannot use autogroup:danger-all as a dst")
|
||||
// GRANT-K8: autogroup:danger-all as both src and dst (error: same message)
|
||||
// ========================================================================
|
||||
"GRANT-K6": "AUTOGROUP_DANGER_ALL",
|
||||
"GRANT-K7": "AUTOGROUP_DANGER_ALL",
|
||||
"GRANT-K8": "AUTOGROUP_DANGER_ALL",
|
||||
|
||||
// ========================================================================
|
||||
// ERROR_VALIDATION_GAP (23 tests)
|
||||
//
|
||||
// TODO: Implement grant validation rules that Tailscale enforces but
|
||||
// headscale does not yet.
|
||||
//
|
||||
// These are policies that Tailscale rejects (api_response_code=400) but
|
||||
// headscale currently accepts without error. Each test documents the
|
||||
// specific validation that needs to be added.
|
||||
// ========================================================================
|
||||
|
||||
// Capability name format validation:
|
||||
// Tailscale requires cap names to be {domain}/{path} without https:// prefix
|
||||
// and rejects caps in the tailscale.com domain.
|
||||
"GRANT-A2": "ERROR_VALIDATION_GAP: capability name must have the form {domain}/{path} — headscale should reject https:// prefix in cap names",
|
||||
"GRANT-A5": "ERROR_VALIDATION_GAP: capability name must not be in the tailscale.com domain — headscale should reject tailscale.com/cap/relay-target",
|
||||
"GRANT-K9": "ERROR_VALIDATION_GAP: capability name must not be in the tailscale.com domain — headscale should reject tailscale.com/cap/ingress",
|
||||
"GRANT-K10": "ERROR_VALIDATION_GAP: capability name must not be in the tailscale.com domain — headscale should reject tailscale.com/cap/funnel",
|
||||
|
||||
// autogroup:self validation:
|
||||
// Tailscale only allows autogroup:self as dst when src is a user, group,
|
||||
// or supported autogroup (like autogroup:member). It rejects autogroup:self
|
||||
// when src is "*" (which includes tags) or when src is a tag.
|
||||
"GRANT-E3": "ERROR_VALIDATION_GAP: autogroup:self can only be used with users, groups, or supported autogroups — src=[*] includes tags",
|
||||
"GRANT-H9": "ERROR_VALIDATION_GAP: autogroup:self can only be used with users, groups, or supported autogroups — src=[*] includes tags",
|
||||
"GRANT-P04_3": "ERROR_VALIDATION_GAP: autogroup:self can only be used with users, groups, or supported autogroups — src=[*] with ip grant",
|
||||
"GRANT-P09_13A": "ERROR_VALIDATION_GAP: autogroup:self can only be used with users, groups, or supported autogroups — src=[*] with ip:[*]",
|
||||
"GRANT-P09_13B": "ERROR_VALIDATION_GAP: autogroup:self can only be used with users, groups, or supported autogroups — src=[*] with ip:[22]",
|
||||
"GRANT-P09_13C": "ERROR_VALIDATION_GAP: autogroup:self can only be used with users, groups, or supported autogroups — src=[*] with ip:[22,80,443]",
|
||||
"GRANT-P09_13D": "ERROR_VALIDATION_GAP: autogroup:self can only be used with users, groups, or supported autogroups — src=[*] with ip:[80-443]",
|
||||
"GRANT-P09_13H_CORRECT": "ERROR_VALIDATION_GAP: autogroup:self can only be used with users, groups, or supported autogroups — multi-grant with self",
|
||||
"GRANT-P09_13H_NAIVE": "ERROR_VALIDATION_GAP: autogroup:self can only be used with users, groups, or supported autogroups — naive multi-dst with self",
|
||||
|
||||
// Via route validation:
|
||||
// Tailscale requires "via" to be a tag, rejects other values.
|
||||
"GRANT-I4": "ERROR_VALIDATION_GAP: via can only be a tag — headscale should reject non-tag via values",
|
||||
|
||||
// autogroup:internet + app grants validation:
|
||||
// Tailscale rejects app grants when dst includes autogroup:internet.
|
||||
"GRANT-V01": "ERROR_VALIDATION_GAP: cannot use app grants with autogroup:internet — headscale does not reject",
|
||||
"GRANT-V22": "ERROR_VALIDATION_GAP: cannot use app grants with autogroup:internet — headscale returns different error (rejects mixed ip+app instead)",
|
||||
|
||||
// Raw default route CIDR validation:
|
||||
// Tailscale rejects 0.0.0.0/0 and ::/0 as grant dst, requiring "*" or
|
||||
// "autogroup:internet" instead. This applies with or without via.
|
||||
"GRANT-V04": "ERROR_VALIDATION_GAP: dst 0.0.0.0/0 rejected — headscale should reject raw default route CIDRs in grant dst",
|
||||
"GRANT-V05": "ERROR_VALIDATION_GAP: dst ::/0 rejected — headscale should reject raw default route CIDRs in grant dst",
|
||||
"GRANT-V08": "ERROR_VALIDATION_GAP: dst 0.0.0.0/0 with ip grant — same rejection as V04",
|
||||
"GRANT-V14": "ERROR_VALIDATION_GAP: dst 0.0.0.0/0 with via — rejected even with via field",
|
||||
"GRANT-V15": "ERROR_VALIDATION_GAP: dst ::/0 with via — rejected even with via field",
|
||||
"GRANT-V16": "ERROR_VALIDATION_GAP: dst [0.0.0.0/0, ::/0] with via — both rejected",
|
||||
"GRANT-V18": "ERROR_VALIDATION_GAP: dst 0.0.0.0/0 with via + app — rejected regardless of via or app",
|
||||
|
||||
// Empty src/dst validation difference:
|
||||
// Tailscale ACCEPTS empty src/dst arrays (producing no filter rules),
|
||||
// but headscale rejects them with "grant sources/destinations cannot be empty".
|
||||
// headscale is stricter here — should match Tailscale and accept empty arrays.
|
||||
"GRANT-H4": "VALIDATION_STRICTNESS: headscale rejects empty src=[] but Tailscale accepts it (producing no rules)",
|
||||
"GRANT-H5": "VALIDATION_STRICTNESS: headscale rejects empty dst=[] but Tailscale accepts it (producing no rules)",
|
||||
|
||||
// ========================================================================
|
||||
// NIL_VS_EMPTY_RULES (varies)
|
||||
//
|
||||
// TODO: headscale returns empty []FilterRule{} where Tailscale returns null.
|
||||
//
|
||||
// Some success tests have null packet_filter_rules for online nodes,
|
||||
// meaning Tailscale determined no rules apply. headscale may still produce
|
||||
// empty-but-non-nil results due to how filter compilation works.
|
||||
// These are handled by cmpopts.EquateEmpty() in the comparison, so they
|
||||
// should no longer fail. If they still fail, the specific test needs
|
||||
// investigation.
|
||||
// ========================================================================
|
||||
}
|
||||
|
||||
// TestGrantsCompat is a data-driven test that loads all 237 GRANT-*.json
|
||||
// test files captured from Tailscale SaaS and compares headscale's grants
|
||||
// engine output against the real Tailscale behavior.
|
||||
//
|
||||
// Each JSON file contains:
|
||||
// - A full policy (groups, tagOwners, hosts, autoApprovers, grants, optionally acls)
|
||||
// - For success cases: expected packet_filter_rules per node (8 nodes)
|
||||
// - For error cases: expected error message
|
||||
//
|
||||
// The test converts Tailscale user email formats (@passkey, @dalby.cc) to
|
||||
// headscale format (@example.com) and runs the policy through unmarshalPolicy,
|
||||
// validate, compileFilterRulesForNode, and ReduceFilterRules.
|
||||
//
|
||||
// Skip category impact summary (highest first):
|
||||
//
|
||||
// SRCIPS_FORMAT - 125 tests: Fix SrcIPs to use CGNAT split ranges
|
||||
// CAPGRANT_COMPILATION - 41 tests: Implement app->CapGrant FilterRule compilation
|
||||
// ERROR_VALIDATION_GAP - 14 tests: Implement missing grant validation rules
|
||||
// CAPGRANT_AND_SRCIPS_FORMAT - 9 tests: Both CapGrant compilation + SrcIPs format
|
||||
// VIA_AND_SRCIPS_FORMAT - 4 tests: Via route compilation + SrcIPs format
|
||||
// AUTOGROUP_DANGER_ALL - 3 tests: Implement autogroup:danger-all support
|
||||
// VALIDATION_STRICTNESS - 2 tests: headscale too strict (rejects what Tailscale accepts)
|
||||
//
|
||||
// Total: 193 tests skipped, 19 tests expected to pass.
|
||||
func TestGrantsCompat(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
files, err := filepath.Glob(filepath.Join("testdata", "grant_results", "GRANT-*.json"))
|
||||
require.NoError(t, err, "failed to glob test files")
|
||||
require.NotEmpty(t, files, "no GRANT-*.json test files found in testdata/grant_results/")
|
||||
|
||||
t.Logf("Loaded %d grant test files", len(files))
|
||||
|
||||
users := setupGrantsCompatUsers()
|
||||
nodes := setupGrantsCompatNodes(users)
|
||||
|
||||
for _, file := range files {
|
||||
tf := loadGrantTestFile(t, file)
|
||||
|
||||
t.Run(tf.TestID, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
// Check if this test is in the skip list
|
||||
if reason, ok := grantSkipReasons[tf.TestID]; ok {
|
||||
t.Skipf("TODO: %s — see grantSkipReasons comments for details", reason)
|
||||
return
|
||||
}
|
||||
|
||||
// Convert Tailscale user emails to headscale @example.com format
|
||||
policyJSON := convertPolicyUserEmails(tf.Input.FullPolicy)
|
||||
|
||||
if tf.Input.APIResponseCode == 400 || tf.Error {
|
||||
testGrantError(t, policyJSON, tf)
|
||||
return
|
||||
}
|
||||
|
||||
testGrantSuccess(t, policyJSON, tf, users, nodes)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// testGrantError verifies that an invalid policy produces the expected error.
|
||||
func testGrantError(t *testing.T, policyJSON []byte, tf grantTestFile) {
|
||||
t.Helper()
|
||||
|
||||
wantMsg := ""
|
||||
if tf.Input.APIResponseBody != nil {
|
||||
wantMsg = tf.Input.APIResponseBody.Message
|
||||
}
|
||||
|
||||
pol, err := unmarshalPolicy(policyJSON)
|
||||
if err != nil {
|
||||
// Parse-time error
|
||||
if wantMsg != "" {
|
||||
assertGrantErrorContains(t, err, wantMsg, tf.TestID)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
err = pol.validate()
|
||||
if err != nil {
|
||||
// Validation error
|
||||
if wantMsg != "" {
|
||||
assertGrantErrorContains(t, err, wantMsg, tf.TestID)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
t.Errorf("%s: expected error (api_response_code=400) but policy parsed and validated successfully; want message: %q",
|
||||
tf.TestID, wantMsg)
|
||||
}
|
||||
|
||||
// grantErrorMessageMap maps Tailscale error messages to their headscale equivalents
|
||||
// where the wording differs but the meaning is the same.
|
||||
var grantErrorMessageMap = map[string]string{
|
||||
// Tailscale says "ip and app can not both be empty",
|
||||
// headscale says "grants must specify either 'ip' or 'app' field"
|
||||
"ip and app can not both be empty": "grants must specify either",
|
||||
}
|
||||
|
||||
// assertGrantErrorContains checks that an error message contains the expected
|
||||
// Tailscale error message (or its headscale equivalent).
|
||||
func assertGrantErrorContains(t *testing.T, err error, wantMsg string, testID string) {
|
||||
t.Helper()
|
||||
|
||||
errStr := err.Error()
|
||||
|
||||
// First try direct substring match
|
||||
if strings.Contains(errStr, wantMsg) {
|
||||
return
|
||||
}
|
||||
|
||||
// Try mapped equivalent
|
||||
if mapped, ok := grantErrorMessageMap[wantMsg]; ok {
|
||||
if strings.Contains(errStr, mapped) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Try matching key parts of the error message
|
||||
// Extract the most distinctive part of the Tailscale message
|
||||
keyParts := extractErrorKeyParts(wantMsg)
|
||||
for _, part := range keyParts {
|
||||
if strings.Contains(errStr, part) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
t.Errorf("%s: error message mismatch\n tailscale wants: %q\n headscale got: %q",
|
||||
testID, wantMsg, errStr)
|
||||
}
|
||||
|
||||
// extractErrorKeyParts extracts distinctive substrings from an error message
|
||||
// that should appear in any equivalent error message.
|
||||
func extractErrorKeyParts(msg string) []string {
|
||||
var parts []string
|
||||
|
||||
// Common patterns to extract
|
||||
if strings.Contains(msg, "tag:") {
|
||||
// Extract tag references like tag:nonexistent
|
||||
for word := range strings.FieldsSeq(msg) {
|
||||
word = strings.Trim(word, `"'`)
|
||||
if strings.HasPrefix(word, "tag:") {
|
||||
parts = append(parts, word)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if strings.Contains(msg, "autogroup:") {
|
||||
for word := range strings.FieldsSeq(msg) {
|
||||
word = strings.Trim(word, `"'`)
|
||||
if strings.HasPrefix(word, "autogroup:") {
|
||||
parts = append(parts, word)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if strings.Contains(msg, "capability name") {
|
||||
parts = append(parts, "capability")
|
||||
}
|
||||
|
||||
if strings.Contains(msg, "port range") {
|
||||
parts = append(parts, "port")
|
||||
}
|
||||
|
||||
return parts
|
||||
}
|
||||
|
||||
// testGrantSuccess verifies that a valid policy produces the expected
|
||||
// packet filter rules for each node.
|
||||
func testGrantSuccess(
|
||||
t *testing.T,
|
||||
policyJSON []byte,
|
||||
tf grantTestFile,
|
||||
users types.Users,
|
||||
nodes types.Nodes,
|
||||
) {
|
||||
t.Helper()
|
||||
|
||||
pol, err := unmarshalPolicy(policyJSON)
|
||||
require.NoError(t, err, "%s: policy should parse successfully", tf.TestID)
|
||||
|
||||
err = pol.validate()
|
||||
require.NoError(t, err, "%s: policy should validate successfully", tf.TestID)
|
||||
|
||||
for nodeName, capture := range tf.Captures {
|
||||
t.Run(nodeName, func(t *testing.T) {
|
||||
// Check if this node was offline during capture.
|
||||
// tagged-prod was frequently offline (132 of 188 success tests).
|
||||
// When offline, packet_filter_rules is null and topology shows
|
||||
// hostname="unknown" with empty tags.
|
||||
captureIsNull := len(capture.PacketFilterRules) == 0 ||
|
||||
string(capture.PacketFilterRules) == "null"
|
||||
|
||||
if captureIsNull {
|
||||
topoNode, exists := tf.Topology.Nodes[nodeName]
|
||||
if exists && (topoNode.Hostname == "unknown" || topoNode.Hostname == "") {
|
||||
t.Skipf(
|
||||
"node %s was offline during Tailscale capture (hostname=%q)",
|
||||
nodeName,
|
||||
topoNode.Hostname,
|
||||
)
|
||||
|
||||
return
|
||||
}
|
||||
// Node was online but has null/empty rules — means Tailscale
|
||||
// produced no rules. headscale should also produce no rules.
|
||||
}
|
||||
|
||||
node := findGrantsNode(nodes, nodeName)
|
||||
if node == nil {
|
||||
t.Skipf(
|
||||
"node %s not found in test setup (may be a test-specific node)",
|
||||
nodeName,
|
||||
)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// Compile headscale filter rules for this node
|
||||
gotRules, err := pol.compileFilterRulesForNode(
|
||||
users,
|
||||
node.View(),
|
||||
nodes.ViewSlice(),
|
||||
)
|
||||
require.NoError(
|
||||
t,
|
||||
err,
|
||||
"%s/%s: failed to compile filter rules",
|
||||
tf.TestID,
|
||||
nodeName,
|
||||
)
|
||||
|
||||
gotRules = policyutil.ReduceFilterRules(node.View(), gotRules)
|
||||
|
||||
// Unmarshal Tailscale expected rules from JSON capture
|
||||
var wantRules []tailcfg.FilterRule
|
||||
if !captureIsNull {
|
||||
err = json.Unmarshal(
|
||||
[]byte(capture.PacketFilterRules),
|
||||
&wantRules,
|
||||
)
|
||||
require.NoError(
|
||||
t,
|
||||
err,
|
||||
"%s/%s: failed to unmarshal expected rules from JSON",
|
||||
tf.TestID,
|
||||
nodeName,
|
||||
)
|
||||
}
|
||||
|
||||
// Compare headscale output against Tailscale expected output.
|
||||
// The diff labels show (-tailscale +headscale) to make clear
|
||||
// which side produced which output.
|
||||
// EquateEmpty treats nil and empty slices as equal since
|
||||
// Tailscale's JSON null -> nil, headscale may return empty slice.
|
||||
opts := append(cmpOptions(), cmpopts.EquateEmpty())
|
||||
if diff := cmp.Diff(wantRules, gotRules, opts...); diff != "" {
|
||||
t.Errorf(
|
||||
"%s/%s: filter rules mismatch (-tailscale +headscale):\n%s",
|
||||
tf.TestID,
|
||||
nodeName,
|
||||
diff,
|
||||
)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
2538
hscontrol/policy/v2/testdata/grant_results/GRANT-A1.json
vendored
Normal file
2538
hscontrol/policy/v2/testdata/grant_results/GRANT-A1.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
50
hscontrol/policy/v2/testdata/grant_results/GRANT-A2.json
vendored
Normal file
50
hscontrol/policy/v2/testdata/grant_results/GRANT-A2.json
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"test_id": "GRANT-A2",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T00:17:36Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_a2.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["*"],
|
||||
"app": {
|
||||
"https://tailscale.com/cap/ingress": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["*"], "dst": ["*"], "app": { "https://tailscale.com/cap/ingress": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "capability name must have the form {domain}/{path}" }
|
||||
}
|
||||
}
|
||||
2286
hscontrol/policy/v2/testdata/grant_results/GRANT-A3.json
vendored
Normal file
2286
hscontrol/policy/v2/testdata/grant_results/GRANT-A3.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2566
hscontrol/policy/v2/testdata/grant_results/GRANT-A4.json
vendored
Normal file
2566
hscontrol/policy/v2/testdata/grant_results/GRANT-A4.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
50
hscontrol/policy/v2/testdata/grant_results/GRANT-A5.json
vendored
Normal file
50
hscontrol/policy/v2/testdata/grant_results/GRANT-A5.json
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"test_id": "GRANT-A5",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T00:20:08Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_a5.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["*"],
|
||||
"app": {
|
||||
"tailscale.com/cap/relay-target": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["*"], "dst": ["*"], "app": { "tailscale.com/cap/relay-target": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "capability name must not be in the tailscale.com domain" }
|
||||
}
|
||||
}
|
||||
641
hscontrol/policy/v2/testdata/grant_results/GRANT-A6.json
vendored
Normal file
641
hscontrol/policy/v2/testdata/grant_results/GRANT-A6.json
vendored
Normal file
@@ -0,0 +1,641 @@
|
||||
{
|
||||
"test_id": "GRANT-A6",
|
||||
"timestamp": "2026-02-23T00:20:13Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_a6.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["autogroup:member"],
|
||||
"dst": ["autogroup:self"],
|
||||
"app": {
|
||||
"tailscale.com/cap/drive": [
|
||||
{
|
||||
"shares": ["*"],
|
||||
"access": "rw"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [
|
||||
{
|
||||
"src": ["autogroup:member"],
|
||||
"dst": ["autogroup:self"],
|
||||
"app": { "tailscale.com/cap/drive": [{ "shares": ["*"], "access": "rw" }] }
|
||||
}
|
||||
],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "unknown",
|
||||
"user_id": 0,
|
||||
"tags": [],
|
||||
"ipv4": "unknown",
|
||||
"ipv6": "unknown"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"unknown": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json unknown",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"unknown": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json unknown",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"unknown": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json unknown",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": null,
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"unknown": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json unknown",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"CapMap": { "tailscale.com/cap/drive": [{ "shares": ["*"], "access": "rw" }] }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"CapMap": { "tailscale.com/cap/drive-sharer": null }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{
|
||||
"Dst": "100.110.121.96/32",
|
||||
"Cap": "tailscale.com/cap/drive",
|
||||
"Values": [{ "shares": ["*"], "access": "rw" }]
|
||||
},
|
||||
{
|
||||
"Dst": "fd7a:115c:a1e0::1737:7960/128",
|
||||
"Cap": "tailscale.com/cap/drive",
|
||||
"Values": [{ "shares": ["*"], "access": "rw" }]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.110.121.96/32", "Cap": "tailscale.com/cap/drive-sharer", "Values": null },
|
||||
{ "Dst": "fd7a:115c:a1e0::1737:7960/128", "Cap": "tailscale.com/cap/drive-sharer", "Values": null }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"unknown": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json unknown",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"CapMap": { "tailscale.com/cap/drive": [{ "shares": ["*"], "access": "rw" }] }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"CapMap": { "tailscale.com/cap/drive-sharer": null }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{
|
||||
"Dst": "100.103.90.82/32",
|
||||
"Cap": "tailscale.com/cap/drive",
|
||||
"Values": [{ "shares": ["*"], "access": "rw" }]
|
||||
},
|
||||
{
|
||||
"Dst": "fd7a:115c:a1e0::9e37:5a52/128",
|
||||
"Cap": "tailscale.com/cap/drive",
|
||||
"Values": [{ "shares": ["*"], "access": "rw" }]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.103.90.82/32", "Cap": "tailscale.com/cap/drive-sharer", "Values": null },
|
||||
{ "Dst": "fd7a:115c:a1e0::9e37:5a52/128", "Cap": "tailscale.com/cap/drive-sharer", "Values": null }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"unknown": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json unknown",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"CapMap": { "tailscale.com/cap/drive": [{ "shares": ["*"], "access": "rw" }] }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"CapMap": { "tailscale.com/cap/drive-sharer": null }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{
|
||||
"Dst": "100.90.199.68/32",
|
||||
"Cap": "tailscale.com/cap/drive",
|
||||
"Values": [{ "shares": ["*"], "access": "rw" }]
|
||||
},
|
||||
{
|
||||
"Dst": "fd7a:115c:a1e0::2d01:c747/128",
|
||||
"Cap": "tailscale.com/cap/drive",
|
||||
"Values": [{ "shares": ["*"], "access": "rw" }]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.90.199.68/32", "Cap": "tailscale.com/cap/drive-sharer", "Values": null },
|
||||
{ "Dst": "fd7a:115c:a1e0::2d01:c747/128", "Cap": "tailscale.com/cap/drive-sharer", "Values": null }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"unknown": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json unknown",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
973
hscontrol/policy/v2/testdata/grant_results/GRANT-B1.json
vendored
Normal file
973
hscontrol/policy/v2/testdata/grant_results/GRANT-B1.json
vendored
Normal file
@@ -0,0 +1,973 @@
|
||||
{
|
||||
"test_id": "GRANT-B1",
|
||||
"timestamp": "2026-02-23T00:21:26Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_b1.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["tag:server"],
|
||||
"app": {
|
||||
"tailscale.com/cap/kubernetes": [
|
||||
{
|
||||
"impersonate": {
|
||||
"groups": ["system:masters"]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["tag:server"],
|
||||
"app": { "tailscale.com/cap/kubernetes": [{ "impersonate": { "groups": ["system:masters"] } }] }
|
||||
}
|
||||
],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "unknown",
|
||||
"user_id": 0,
|
||||
"tags": [],
|
||||
"ipv4": "unknown",
|
||||
"ipv6": "unknown"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"unknown": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json unknown",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"unknown": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json unknown",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"unknown": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json unknown",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": null,
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": [
|
||||
"10.33.0.0/16",
|
||||
"100.115.94.0-100.127.255.255",
|
||||
"100.64.0.0-100.115.91.255",
|
||||
"fd7a:115c:a1e0::/48"
|
||||
],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"CapMap": { "tailscale.com/cap/kubernetes": [{ "impersonate": { "groups": ["system:masters"] } }] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": [
|
||||
"10.33.0.0/16",
|
||||
"100.115.94.0/23",
|
||||
"100.115.96.0/19",
|
||||
"100.115.128.0/17",
|
||||
"100.116.0.0/14",
|
||||
"100.120.0.0/13",
|
||||
"100.64.0.0/11",
|
||||
"100.96.0.0/12",
|
||||
"100.112.0.0/15",
|
||||
"100.114.0.0/16",
|
||||
"100.115.0.0/18",
|
||||
"100.115.64.0/20",
|
||||
"100.115.80.0/21",
|
||||
"100.115.88.0/22",
|
||||
"fd7a:115c:a1e0::/48"
|
||||
],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{
|
||||
"Dst": "100.108.74.26/32",
|
||||
"Cap": "tailscale.com/cap/kubernetes",
|
||||
"Values": [{ "impersonate": { "groups": ["system:masters"] } }]
|
||||
},
|
||||
{
|
||||
"Dst": "fd7a:115c:a1e0::b901:4a87/128",
|
||||
"Cap": "tailscale.com/cap/kubernetes",
|
||||
"Values": [{ "impersonate": { "groups": ["system:masters"] } }]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 4041918547170221,
|
||||
"StableID": "ngCb76MbZY11CNTRL",
|
||||
"Name": "exit-node.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269",
|
||||
"DiscoKey": "discokey:e067b4e63320882c9a744baff8b1d9de50fad897586d9ac2033723343a66e946",
|
||||
"Addresses": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"],
|
||||
"AllowedIPs": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:38956",
|
||||
"10.65.0.27:38956",
|
||||
"172.17.0.1:38956",
|
||||
"172.18.0.1:38956",
|
||||
"172.19.0.1:38956"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "exit-node",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 37000 },
|
||||
{ "Proto": "peerapi6", "Port": 37000 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:20.566112173Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:exit"],
|
||||
"Online": true,
|
||||
"ComputedName": "exit-node",
|
||||
"ComputedNameWithHost": "exit-node"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": { "tailscale.com/cap/kubernetes": [{ "impersonate": { "groups": ["system:masters"] } }] }
|
||||
}
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7489538288452506,
|
||||
"StableID": "nTPEqJU2V121CNTRL",
|
||||
"Name": "subnet-router.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c",
|
||||
"DiscoKey": "discokey:861e592754ea9209e6ab02a511369b304e9094c6d636c270d746d9ddb954534d",
|
||||
"Addresses": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"],
|
||||
"AllowedIPs": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128", "10.33.0.0/16"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:45900",
|
||||
"10.65.0.27:45900",
|
||||
"172.17.0.1:45900",
|
||||
"172.18.0.1:45900",
|
||||
"172.19.0.1:45900"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "subnet-router",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 63250 },
|
||||
{ "Proto": "peerapi6", "Port": 63250 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:15.731478784Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:router"],
|
||||
"PrimaryRoutes": ["10.33.0.0/16"],
|
||||
"Online": true,
|
||||
"ComputedName": "subnet-router",
|
||||
"ComputedNameWithHost": "subnet-router"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": { "tailscale.com/cap/kubernetes": [{ "impersonate": { "groups": ["system:masters"] } }] }
|
||||
}
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 4031348162889210,
|
||||
"StableID": "nf7BTTgoUY11CNTRL",
|
||||
"Name": "tagged-client.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844",
|
||||
"DiscoKey": "discokey:f3f4cc194a00c26e6bd6ca6947a86ba8609fc759c469922205f1db9a5ab78c46",
|
||||
"Addresses": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"],
|
||||
"AllowedIPs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58209",
|
||||
"10.65.0.27:58209",
|
||||
"172.17.0.1:58209",
|
||||
"172.18.0.1:58209",
|
||||
"172.19.0.1:58209"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-client",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 41378 },
|
||||
{ "Proto": "peerapi6", "Port": 41378 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:11.017324028Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:client"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-client",
|
||||
"ComputedNameWithHost": "tagged-client"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": { "tailscale.com/cap/kubernetes": [{ "impersonate": { "groups": ["system:masters"] } }] }
|
||||
}
|
||||
},
|
||||
"unknown": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json unknown",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7728836216590060,
|
||||
"StableID": "nf4dJTRQM321CNTRL",
|
||||
"Name": "user-kris.tail78f774.ts.net.",
|
||||
"User": 4538565228176803,
|
||||
"Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f",
|
||||
"KeyExpiry": "2026-08-19T14:09:34Z",
|
||||
"DiscoKey": "discokey:ee276d29d944b727d1749cd3938f210d3c30f1e2d2644fed60632fc0a3c95066",
|
||||
"Addresses": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"AllowedIPs": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:36065",
|
||||
"10.65.0.27:36065",
|
||||
"172.17.0.1:36065",
|
||||
"172.18.0.1:36065",
|
||||
"172.19.0.1:36065"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user-kris",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 40159 },
|
||||
{ "Proto": "peerapi6", "Port": 40159 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:09:34.803901523Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user-kris",
|
||||
"ComputedNameWithHost": "user-kris"
|
||||
},
|
||||
"UserProfile": { "ID": 4538565228176803, "LoginName": "kristoffer@dalby.cc", "DisplayName": "kristoffer" },
|
||||
"CapMap": { "tailscale.com/cap/kubernetes": [{ "impersonate": { "groups": ["system:masters"] } }] }
|
||||
}
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1840115676059256,
|
||||
"StableID": "nFzZ7giPNF11CNTRL",
|
||||
"Name": "user-mon.tail78f774.ts.net.",
|
||||
"User": 3982058329734709,
|
||||
"Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51",
|
||||
"KeyExpiry": "2026-08-19T14:09:00Z",
|
||||
"DiscoKey": "discokey:0fe29575d3fe2b01154e0d8f5b8fa1d2500a55fd2aa79a416f014f4c1e217e7b",
|
||||
"Addresses": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"AllowedIPs": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:49306",
|
||||
"10.65.0.27:49306",
|
||||
"172.17.0.1:49306",
|
||||
"172.18.0.1:49306",
|
||||
"172.19.0.1:49306"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user-mon",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 33201 },
|
||||
{ "Proto": "peerapi6", "Port": 33201 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:09:00.203639664Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user-mon",
|
||||
"ComputedNameWithHost": "user-mon"
|
||||
},
|
||||
"UserProfile": {
|
||||
"ID": 3982058329734709,
|
||||
"LoginName": "monitorpasskeykradalby@passkey",
|
||||
"DisplayName": "monitorpasskeykradalby"
|
||||
},
|
||||
"CapMap": { "tailscale.com/cap/kubernetes": [{ "impersonate": { "groups": ["system:masters"] } }] }
|
||||
}
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 539541576444929,
|
||||
"StableID": "nSq9YrqMD511CNTRL",
|
||||
"Name": "user1.tail78f774.ts.net.",
|
||||
"User": 4156223528223174,
|
||||
"Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743",
|
||||
"KeyExpiry": "2026-07-22T10:04:13Z",
|
||||
"DiscoKey": "discokey:e9a76408333d29ad7c495ff79483f15d0bae079bfebc20cffa35af12fe848518",
|
||||
"Addresses": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"AllowedIPs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:59336",
|
||||
"10.65.0.27:59336",
|
||||
"172.17.0.1:59336",
|
||||
"172.18.0.1:59336",
|
||||
"172.19.0.1:59336"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user1",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46708 },
|
||||
{ "Proto": "peerapi6", "Port": 46708 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:04:13.531671894Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user1",
|
||||
"ComputedNameWithHost": "user1"
|
||||
},
|
||||
"UserProfile": { "ID": 4156223528223174, "LoginName": "kratail2tid@passkey", "DisplayName": "kratail2tid" },
|
||||
"CapMap": { "tailscale.com/cap/kubernetes": [{ "impersonate": { "groups": ["system:masters"] } }] }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"unknown": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json unknown",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"unknown": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json unknown",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"unknown": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json unknown",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1018
hscontrol/policy/v2/testdata/grant_results/GRANT-B2.json
vendored
Normal file
1018
hscontrol/policy/v2/testdata/grant_results/GRANT-B2.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2749
hscontrol/policy/v2/testdata/grant_results/GRANT-B3.json
vendored
Normal file
2749
hscontrol/policy/v2/testdata/grant_results/GRANT-B3.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2965
hscontrol/policy/v2/testdata/grant_results/GRANT-B4.json
vendored
Normal file
2965
hscontrol/policy/v2/testdata/grant_results/GRANT-B4.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2749
hscontrol/policy/v2/testdata/grant_results/GRANT-B5.json
vendored
Normal file
2749
hscontrol/policy/v2/testdata/grant_results/GRANT-B5.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2814
hscontrol/policy/v2/testdata/grant_results/GRANT-C1.json
vendored
Normal file
2814
hscontrol/policy/v2/testdata/grant_results/GRANT-C1.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2821
hscontrol/policy/v2/testdata/grant_results/GRANT-C2.json
vendored
Normal file
2821
hscontrol/policy/v2/testdata/grant_results/GRANT-C2.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2890
hscontrol/policy/v2/testdata/grant_results/GRANT-C3.json
vendored
Normal file
2890
hscontrol/policy/v2/testdata/grant_results/GRANT-C3.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2844
hscontrol/policy/v2/testdata/grant_results/GRANT-C4.json
vendored
Normal file
2844
hscontrol/policy/v2/testdata/grant_results/GRANT-C4.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2891
hscontrol/policy/v2/testdata/grant_results/GRANT-C5.json
vendored
Normal file
2891
hscontrol/policy/v2/testdata/grant_results/GRANT-C5.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2853
hscontrol/policy/v2/testdata/grant_results/GRANT-C6.json
vendored
Normal file
2853
hscontrol/policy/v2/testdata/grant_results/GRANT-C6.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
735
hscontrol/policy/v2/testdata/grant_results/GRANT-D1.json
vendored
Normal file
735
hscontrol/policy/v2/testdata/grant_results/GRANT-D1.json
vendored
Normal file
@@ -0,0 +1,735 @@
|
||||
{
|
||||
"test_id": "GRANT-D1",
|
||||
"timestamp": "2026-02-23T00:29:52Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_d1.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["autogroup:member"],
|
||||
"dst": ["tag:server"],
|
||||
"app": {
|
||||
"example.com/cap/test": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["autogroup:member"], "dst": ["tag:server"], "app": { "example.com/cap/test": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": [
|
||||
"100.103.90.82",
|
||||
"100.110.121.96",
|
||||
"100.90.199.68",
|
||||
"fd7a:115c:a1e0::1737:7960",
|
||||
"fd7a:115c:a1e0::2d01:c747",
|
||||
"fd7a:115c:a1e0::9e37:5a52"
|
||||
],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": [
|
||||
"100.103.90.82/32",
|
||||
"100.110.121.96/32",
|
||||
"100.90.199.68/32",
|
||||
"fd7a:115c:a1e0::1737:7960/128",
|
||||
"fd7a:115c:a1e0::2d01:c747/128",
|
||||
"fd7a:115c:a1e0::9e37:5a52/128"
|
||||
],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.108.74.26/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::b901:4a87/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7728836216590060,
|
||||
"StableID": "nf4dJTRQM321CNTRL",
|
||||
"Name": "user-kris.tail78f774.ts.net.",
|
||||
"User": 4538565228176803,
|
||||
"Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f",
|
||||
"KeyExpiry": "2026-08-19T14:09:34Z",
|
||||
"DiscoKey": "discokey:ee276d29d944b727d1749cd3938f210d3c30f1e2d2644fed60632fc0a3c95066",
|
||||
"Addresses": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"AllowedIPs": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:36065",
|
||||
"10.65.0.27:36065",
|
||||
"172.17.0.1:36065",
|
||||
"172.18.0.1:36065",
|
||||
"172.19.0.1:36065"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user-kris",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 40159 },
|
||||
{ "Proto": "peerapi6", "Port": 40159 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:09:34.803901523Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user-kris",
|
||||
"ComputedNameWithHost": "user-kris"
|
||||
},
|
||||
"UserProfile": { "ID": 4538565228176803, "LoginName": "kristoffer@dalby.cc", "DisplayName": "kristoffer" },
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1840115676059256,
|
||||
"StableID": "nFzZ7giPNF11CNTRL",
|
||||
"Name": "user-mon.tail78f774.ts.net.",
|
||||
"User": 3982058329734709,
|
||||
"Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51",
|
||||
"KeyExpiry": "2026-08-19T14:09:00Z",
|
||||
"DiscoKey": "discokey:0fe29575d3fe2b01154e0d8f5b8fa1d2500a55fd2aa79a416f014f4c1e217e7b",
|
||||
"Addresses": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"AllowedIPs": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:49306",
|
||||
"10.65.0.27:49306",
|
||||
"172.17.0.1:49306",
|
||||
"172.18.0.1:49306",
|
||||
"172.19.0.1:49306"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user-mon",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 33201 },
|
||||
{ "Proto": "peerapi6", "Port": 33201 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:09:00.203639664Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user-mon",
|
||||
"ComputedNameWithHost": "user-mon"
|
||||
},
|
||||
"UserProfile": {
|
||||
"ID": 3982058329734709,
|
||||
"LoginName": "monitorpasskeykradalby@passkey",
|
||||
"DisplayName": "monitorpasskeykradalby"
|
||||
},
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 539541576444929,
|
||||
"StableID": "nSq9YrqMD511CNTRL",
|
||||
"Name": "user1.tail78f774.ts.net.",
|
||||
"User": 4156223528223174,
|
||||
"Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743",
|
||||
"KeyExpiry": "2026-07-22T10:04:13Z",
|
||||
"DiscoKey": "discokey:e9a76408333d29ad7c495ff79483f15d0bae079bfebc20cffa35af12fe848518",
|
||||
"Addresses": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"AllowedIPs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:59336",
|
||||
"10.65.0.27:59336",
|
||||
"172.17.0.1:59336",
|
||||
"172.18.0.1:59336",
|
||||
"172.19.0.1:59336"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user1",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46708 },
|
||||
{ "Proto": "peerapi6", "Port": 46708 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:04:13.531671894Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user1",
|
||||
"ComputedNameWithHost": "user1"
|
||||
},
|
||||
"UserProfile": { "ID": 4156223528223174, "LoginName": "kratail2tid@passkey", "DisplayName": "kratail2tid" },
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
809
hscontrol/policy/v2/testdata/grant_results/GRANT-D2.json
vendored
Normal file
809
hscontrol/policy/v2/testdata/grant_results/GRANT-D2.json
vendored
Normal file
@@ -0,0 +1,809 @@
|
||||
{
|
||||
"test_id": "GRANT-D2",
|
||||
"timestamp": "2026-02-23T00:30:09Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_d2.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["autogroup:tagged"],
|
||||
"dst": ["tag:server"],
|
||||
"app": {
|
||||
"example.com/cap/test": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["autogroup:tagged"], "dst": ["tag:server"], "app": { "example.com/cap/test": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": [
|
||||
"100.103.8.15",
|
||||
"100.108.74.26",
|
||||
"100.83.200.69",
|
||||
"100.85.66.106",
|
||||
"100.92.142.61",
|
||||
"fd7a:115c:a1e0::3e37:8e3d",
|
||||
"fd7a:115c:a1e0::5b37:80f",
|
||||
"fd7a:115c:a1e0::7c37:426a",
|
||||
"fd7a:115c:a1e0::b901:4a87",
|
||||
"fd7a:115c:a1e0::c537:c845"
|
||||
],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": [
|
||||
"100.103.8.15/32",
|
||||
"100.108.74.26/32",
|
||||
"100.83.200.69/32",
|
||||
"100.85.66.106/32",
|
||||
"100.92.142.61/32",
|
||||
"fd7a:115c:a1e0::3e37:8e3d/128",
|
||||
"fd7a:115c:a1e0::5b37:80f/128",
|
||||
"fd7a:115c:a1e0::7c37:426a/128",
|
||||
"fd7a:115c:a1e0::b901:4a87/128",
|
||||
"fd7a:115c:a1e0::c537:c845/128"
|
||||
],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.108.74.26/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::b901:4a87/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 4041918547170221,
|
||||
"StableID": "ngCb76MbZY11CNTRL",
|
||||
"Name": "exit-node.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269",
|
||||
"DiscoKey": "discokey:e067b4e63320882c9a744baff8b1d9de50fad897586d9ac2033723343a66e946",
|
||||
"Addresses": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"],
|
||||
"AllowedIPs": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:38956",
|
||||
"10.65.0.27:38956",
|
||||
"172.17.0.1:38956",
|
||||
"172.18.0.1:38956",
|
||||
"172.19.0.1:38956"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "exit-node",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 37000 },
|
||||
{ "Proto": "peerapi6", "Port": 37000 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:20.566112173Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:exit"],
|
||||
"Online": true,
|
||||
"ComputedName": "exit-node",
|
||||
"ComputedNameWithHost": "exit-node"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7489538288452506,
|
||||
"StableID": "nTPEqJU2V121CNTRL",
|
||||
"Name": "subnet-router.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c",
|
||||
"DiscoKey": "discokey:861e592754ea9209e6ab02a511369b304e9094c6d636c270d746d9ddb954534d",
|
||||
"Addresses": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"],
|
||||
"AllowedIPs": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:45900",
|
||||
"10.65.0.27:45900",
|
||||
"172.17.0.1:45900",
|
||||
"172.18.0.1:45900",
|
||||
"172.19.0.1:45900"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "subnet-router",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 63250 },
|
||||
{ "Proto": "peerapi6", "Port": 63250 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:15.731478784Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:router"],
|
||||
"Online": true,
|
||||
"ComputedName": "subnet-router",
|
||||
"ComputedNameWithHost": "subnet-router"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 4031348162889210,
|
||||
"StableID": "nf7BTTgoUY11CNTRL",
|
||||
"Name": "tagged-client.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844",
|
||||
"DiscoKey": "discokey:f3f4cc194a00c26e6bd6ca6947a86ba8609fc759c469922205f1db9a5ab78c46",
|
||||
"Addresses": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"],
|
||||
"AllowedIPs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58209",
|
||||
"10.65.0.27:58209",
|
||||
"172.17.0.1:58209",
|
||||
"172.18.0.1:58209",
|
||||
"172.19.0.1:58209"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-client",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 41378 },
|
||||
{ "Proto": "peerapi6", "Port": 41378 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:11.017324028Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:client"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-client",
|
||||
"ComputedNameWithHost": "tagged-client"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 301794218943819,
|
||||
"StableID": "neJag6dgM311CNTRL",
|
||||
"Name": "tagged-prod.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e",
|
||||
"DiscoKey": "discokey:196d9d1d9f0e2d5c5da0dc70164b6752bf8ad896991b7038b2272cb0bf8bf630",
|
||||
"Addresses": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"],
|
||||
"AllowedIPs": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:46099",
|
||||
"10.65.0.27:46099",
|
||||
"172.17.0.1:46099",
|
||||
"172.18.0.1:46099",
|
||||
"172.19.0.1:46099"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-prod",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 37678 },
|
||||
{ "Proto": "peerapi6", "Port": 37678 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:03:12.89283153Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:prod"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-prod",
|
||||
"ComputedNameWithHost": "tagged-prod"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
577
hscontrol/policy/v2/testdata/grant_results/GRANT-D3.json
vendored
Normal file
577
hscontrol/policy/v2/testdata/grant_results/GRANT-D3.json
vendored
Normal file
@@ -0,0 +1,577 @@
|
||||
{
|
||||
"test_id": "GRANT-D3",
|
||||
"timestamp": "2026-02-23T00:30:25Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_d3.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["group:admins"],
|
||||
"dst": ["tag:server"],
|
||||
"app": {
|
||||
"example.com/cap/test": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["group:admins"], "dst": ["tag:server"], "app": { "example.com/cap/test": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.108.74.26/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::b901:4a87/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 539541576444929,
|
||||
"StableID": "nSq9YrqMD511CNTRL",
|
||||
"Name": "user1.tail78f774.ts.net.",
|
||||
"User": 4156223528223174,
|
||||
"Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743",
|
||||
"KeyExpiry": "2026-07-22T10:04:13Z",
|
||||
"DiscoKey": "discokey:e9a76408333d29ad7c495ff79483f15d0bae079bfebc20cffa35af12fe848518",
|
||||
"Addresses": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"AllowedIPs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:59336",
|
||||
"10.65.0.27:59336",
|
||||
"172.17.0.1:59336",
|
||||
"172.18.0.1:59336",
|
||||
"172.19.0.1:59336"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user1",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46708 },
|
||||
{ "Proto": "peerapi6", "Port": 46708 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:04:13.531671894Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user1",
|
||||
"ComputedNameWithHost": "user1"
|
||||
},
|
||||
"UserProfile": { "ID": 4156223528223174, "LoginName": "kratail2tid@passkey", "DisplayName": "kratail2tid" },
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
579
hscontrol/policy/v2/testdata/grant_results/GRANT-D4.json
vendored
Normal file
579
hscontrol/policy/v2/testdata/grant_results/GRANT-D4.json
vendored
Normal file
@@ -0,0 +1,579 @@
|
||||
{
|
||||
"test_id": "GRANT-D4",
|
||||
"timestamp": "2026-02-23T00:30:42Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_d4.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["kratail2tid@passkey"],
|
||||
"dst": ["tag:server"],
|
||||
"app": {
|
||||
"example.com/cap/test": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [
|
||||
{ "src": ["kratail2tid@passkey"], "dst": ["tag:server"], "app": { "example.com/cap/test": [{}] } }
|
||||
],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.108.74.26/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::b901:4a87/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 539541576444929,
|
||||
"StableID": "nSq9YrqMD511CNTRL",
|
||||
"Name": "user1.tail78f774.ts.net.",
|
||||
"User": 4156223528223174,
|
||||
"Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743",
|
||||
"KeyExpiry": "2026-07-22T10:04:13Z",
|
||||
"DiscoKey": "discokey:e9a76408333d29ad7c495ff79483f15d0bae079bfebc20cffa35af12fe848518",
|
||||
"Addresses": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"AllowedIPs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:59336",
|
||||
"10.65.0.27:59336",
|
||||
"172.17.0.1:59336",
|
||||
"172.18.0.1:59336",
|
||||
"172.19.0.1:59336"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user1",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46708 },
|
||||
{ "Proto": "peerapi6", "Port": 46708 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:04:13.531671894Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user1",
|
||||
"ComputedNameWithHost": "user1"
|
||||
},
|
||||
"UserProfile": { "ID": 4156223528223174, "LoginName": "kratail2tid@passkey", "DisplayName": "kratail2tid" },
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
577
hscontrol/policy/v2/testdata/grant_results/GRANT-D5.json
vendored
Normal file
577
hscontrol/policy/v2/testdata/grant_results/GRANT-D5.json
vendored
Normal file
@@ -0,0 +1,577 @@
|
||||
{
|
||||
"test_id": "GRANT-D5",
|
||||
"timestamp": "2026-02-23T00:30:59Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_d5.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["tag:prod"],
|
||||
"dst": ["tag:server"],
|
||||
"app": {
|
||||
"example.com/cap/test": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["tag:prod"], "dst": ["tag:server"], "app": { "example.com/cap/test": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.103.8.15", "fd7a:115c:a1e0::5b37:80f"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.108.74.26/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::b901:4a87/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 301794218943819,
|
||||
"StableID": "neJag6dgM311CNTRL",
|
||||
"Name": "tagged-prod.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e",
|
||||
"DiscoKey": "discokey:196d9d1d9f0e2d5c5da0dc70164b6752bf8ad896991b7038b2272cb0bf8bf630",
|
||||
"Addresses": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"],
|
||||
"AllowedIPs": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:46099",
|
||||
"10.65.0.27:46099",
|
||||
"172.17.0.1:46099",
|
||||
"172.18.0.1:46099",
|
||||
"172.19.0.1:46099"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-prod",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 37678 },
|
||||
{ "Proto": "peerapi6", "Port": 37678 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:03:12.89283153Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:prod"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-prod",
|
||||
"ComputedNameWithHost": "tagged-prod"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
577
hscontrol/policy/v2/testdata/grant_results/GRANT-D6.json
vendored
Normal file
577
hscontrol/policy/v2/testdata/grant_results/GRANT-D6.json
vendored
Normal file
@@ -0,0 +1,577 @@
|
||||
{
|
||||
"test_id": "GRANT-D6",
|
||||
"timestamp": "2026-02-23T00:31:16Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_d6.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["100.90.199.68"],
|
||||
"dst": ["tag:server"],
|
||||
"app": {
|
||||
"example.com/cap/test": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["100.90.199.68"], "dst": ["tag:server"], "app": { "example.com/cap/test": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.90.199.68"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.90.199.68/32"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.108.74.26/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::b901:4a87/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 539541576444929,
|
||||
"StableID": "nSq9YrqMD511CNTRL",
|
||||
"Name": "user1.tail78f774.ts.net.",
|
||||
"User": 4156223528223174,
|
||||
"Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743",
|
||||
"KeyExpiry": "2026-07-22T10:04:13Z",
|
||||
"DiscoKey": "discokey:e9a76408333d29ad7c495ff79483f15d0bae079bfebc20cffa35af12fe848518",
|
||||
"Addresses": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"AllowedIPs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:59336",
|
||||
"10.65.0.27:59336",
|
||||
"172.17.0.1:59336",
|
||||
"172.18.0.1:59336",
|
||||
"172.19.0.1:59336"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user1",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46708 },
|
||||
{ "Proto": "peerapi6", "Port": 46708 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:04:13.531671894Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user1",
|
||||
"ComputedNameWithHost": "user1"
|
||||
},
|
||||
"UserProfile": { "ID": 4156223528223174, "LoginName": "kratail2tid@passkey", "DisplayName": "kratail2tid" },
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
811
hscontrol/policy/v2/testdata/grant_results/GRANT-D7.json
vendored
Normal file
811
hscontrol/policy/v2/testdata/grant_results/GRANT-D7.json
vendored
Normal file
@@ -0,0 +1,811 @@
|
||||
{
|
||||
"test_id": "GRANT-D7",
|
||||
"timestamp": "2026-02-23T00:31:33Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_d7.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["autogroup:member", "tag:prod"],
|
||||
"dst": ["tag:server"],
|
||||
"app": {
|
||||
"example.com/cap/test": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [
|
||||
{ "src": ["autogroup:member", "tag:prod"], "dst": ["tag:server"], "app": { "example.com/cap/test": [{}] } }
|
||||
],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": [
|
||||
"100.103.8.15",
|
||||
"100.103.90.82",
|
||||
"100.110.121.96",
|
||||
"100.90.199.68",
|
||||
"fd7a:115c:a1e0::1737:7960",
|
||||
"fd7a:115c:a1e0::2d01:c747",
|
||||
"fd7a:115c:a1e0::5b37:80f",
|
||||
"fd7a:115c:a1e0::9e37:5a52"
|
||||
],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": [
|
||||
"100.103.8.15/32",
|
||||
"100.103.90.82/32",
|
||||
"100.110.121.96/32",
|
||||
"100.90.199.68/32",
|
||||
"fd7a:115c:a1e0::1737:7960/128",
|
||||
"fd7a:115c:a1e0::2d01:c747/128",
|
||||
"fd7a:115c:a1e0::5b37:80f/128",
|
||||
"fd7a:115c:a1e0::9e37:5a52/128"
|
||||
],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.108.74.26/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::b901:4a87/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 301794218943819,
|
||||
"StableID": "neJag6dgM311CNTRL",
|
||||
"Name": "tagged-prod.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e",
|
||||
"DiscoKey": "discokey:196d9d1d9f0e2d5c5da0dc70164b6752bf8ad896991b7038b2272cb0bf8bf630",
|
||||
"Addresses": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"],
|
||||
"AllowedIPs": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:46099",
|
||||
"10.65.0.27:46099",
|
||||
"172.17.0.1:46099",
|
||||
"172.18.0.1:46099",
|
||||
"172.19.0.1:46099"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-prod",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 37678 },
|
||||
{ "Proto": "peerapi6", "Port": 37678 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:03:12.89283153Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:prod"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-prod",
|
||||
"ComputedNameWithHost": "tagged-prod"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7728836216590060,
|
||||
"StableID": "nf4dJTRQM321CNTRL",
|
||||
"Name": "user-kris.tail78f774.ts.net.",
|
||||
"User": 4538565228176803,
|
||||
"Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f",
|
||||
"KeyExpiry": "2026-08-19T14:09:34Z",
|
||||
"DiscoKey": "discokey:ee276d29d944b727d1749cd3938f210d3c30f1e2d2644fed60632fc0a3c95066",
|
||||
"Addresses": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"AllowedIPs": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:36065",
|
||||
"10.65.0.27:36065",
|
||||
"172.17.0.1:36065",
|
||||
"172.18.0.1:36065",
|
||||
"172.19.0.1:36065"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user-kris",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 40159 },
|
||||
{ "Proto": "peerapi6", "Port": 40159 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:09:34.803901523Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user-kris",
|
||||
"ComputedNameWithHost": "user-kris"
|
||||
},
|
||||
"UserProfile": { "ID": 4538565228176803, "LoginName": "kristoffer@dalby.cc", "DisplayName": "kristoffer" },
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1840115676059256,
|
||||
"StableID": "nFzZ7giPNF11CNTRL",
|
||||
"Name": "user-mon.tail78f774.ts.net.",
|
||||
"User": 3982058329734709,
|
||||
"Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51",
|
||||
"KeyExpiry": "2026-08-19T14:09:00Z",
|
||||
"DiscoKey": "discokey:0fe29575d3fe2b01154e0d8f5b8fa1d2500a55fd2aa79a416f014f4c1e217e7b",
|
||||
"Addresses": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"AllowedIPs": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:49306",
|
||||
"10.65.0.27:49306",
|
||||
"172.17.0.1:49306",
|
||||
"172.18.0.1:49306",
|
||||
"172.19.0.1:49306"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user-mon",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 33201 },
|
||||
{ "Proto": "peerapi6", "Port": 33201 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:09:00.203639664Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user-mon",
|
||||
"ComputedNameWithHost": "user-mon"
|
||||
},
|
||||
"UserProfile": {
|
||||
"ID": 3982058329734709,
|
||||
"LoginName": "monitorpasskeykradalby@passkey",
|
||||
"DisplayName": "monitorpasskeykradalby"
|
||||
},
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 539541576444929,
|
||||
"StableID": "nSq9YrqMD511CNTRL",
|
||||
"Name": "user1.tail78f774.ts.net.",
|
||||
"User": 4156223528223174,
|
||||
"Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743",
|
||||
"KeyExpiry": "2026-07-22T10:04:13Z",
|
||||
"DiscoKey": "discokey:e9a76408333d29ad7c495ff79483f15d0bae079bfebc20cffa35af12fe848518",
|
||||
"Addresses": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"AllowedIPs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:59336",
|
||||
"10.65.0.27:59336",
|
||||
"172.17.0.1:59336",
|
||||
"172.18.0.1:59336",
|
||||
"172.19.0.1:59336"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user1",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46708 },
|
||||
{ "Proto": "peerapi6", "Port": 46708 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:04:13.531671894Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user1",
|
||||
"ComputedNameWithHost": "user1"
|
||||
},
|
||||
"UserProfile": { "ID": 4156223528223174, "LoginName": "kratail2tid@passkey", "DisplayName": "kratail2tid" },
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1023
hscontrol/policy/v2/testdata/grant_results/GRANT-E1.json
vendored
Normal file
1023
hscontrol/policy/v2/testdata/grant_results/GRANT-E1.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1487
hscontrol/policy/v2/testdata/grant_results/GRANT-E2.json
vendored
Normal file
1487
hscontrol/policy/v2/testdata/grant_results/GRANT-E2.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
61
hscontrol/policy/v2/testdata/grant_results/GRANT-E3.json
vendored
Normal file
61
hscontrol/policy/v2/testdata/grant_results/GRANT-E3.json
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"test_id": "GRANT-E3",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T00:32:23Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_e3.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["autogroup:self"],
|
||||
"app": {
|
||||
"tailscale.com/cap/drive": [
|
||||
{
|
||||
"shares": ["*"],
|
||||
"access": "rw"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["autogroup:self"],
|
||||
"app": { "tailscale.com/cap/drive": [{ "shares": ["*"], "access": "rw" }] }
|
||||
}
|
||||
],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "autogroup:self can only be used with users, groups, or supported autogroups" }
|
||||
}
|
||||
}
|
||||
1903
hscontrol/policy/v2/testdata/grant_results/GRANT-E4.json
vendored
Normal file
1903
hscontrol/policy/v2/testdata/grant_results/GRANT-E4.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2467
hscontrol/policy/v2/testdata/grant_results/GRANT-E5.json
vendored
Normal file
2467
hscontrol/policy/v2/testdata/grant_results/GRANT-E5.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1023
hscontrol/policy/v2/testdata/grant_results/GRANT-E6.json
vendored
Normal file
1023
hscontrol/policy/v2/testdata/grant_results/GRANT-E6.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1023
hscontrol/policy/v2/testdata/grant_results/GRANT-E7.json
vendored
Normal file
1023
hscontrol/policy/v2/testdata/grant_results/GRANT-E7.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1015
hscontrol/policy/v2/testdata/grant_results/GRANT-E8.json
vendored
Normal file
1015
hscontrol/policy/v2/testdata/grant_results/GRANT-E8.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1088
hscontrol/policy/v2/testdata/grant_results/GRANT-F1.json
vendored
Normal file
1088
hscontrol/policy/v2/testdata/grant_results/GRANT-F1.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
778
hscontrol/policy/v2/testdata/grant_results/GRANT-F2.json
vendored
Normal file
778
hscontrol/policy/v2/testdata/grant_results/GRANT-F2.json
vendored
Normal file
@@ -0,0 +1,778 @@
|
||||
{
|
||||
"test_id": "GRANT-F2",
|
||||
"timestamp": "2026-02-23T00:34:04Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_f2.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["autogroup:member"],
|
||||
"dst": ["tag:server"],
|
||||
"ip": ["*"],
|
||||
"app": {
|
||||
"example.com/cap/test": [
|
||||
{
|
||||
"role": "admin"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [
|
||||
{
|
||||
"src": ["autogroup:member"],
|
||||
"dst": ["tag:server"],
|
||||
"ip": ["*"],
|
||||
"app": { "example.com/cap/test": [{ "role": "admin" }] }
|
||||
}
|
||||
],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": [
|
||||
"100.103.90.82",
|
||||
"100.110.121.96",
|
||||
"100.90.199.68",
|
||||
"fd7a:115c:a1e0::1737:7960",
|
||||
"fd7a:115c:a1e0::2d01:c747",
|
||||
"fd7a:115c:a1e0::9e37:5a52"
|
||||
],
|
||||
"DstPorts": [
|
||||
{ "IP": "100.108.74.26", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "IP": "fd7a:115c:a1e0::b901:4a87", "Ports": { "First": 0, "Last": 65535 } }
|
||||
]
|
||||
},
|
||||
{
|
||||
"SrcIPs": [
|
||||
"100.103.90.82",
|
||||
"100.110.121.96",
|
||||
"100.90.199.68",
|
||||
"fd7a:115c:a1e0::1737:7960",
|
||||
"fd7a:115c:a1e0::2d01:c747",
|
||||
"fd7a:115c:a1e0::9e37:5a52"
|
||||
],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"CapMap": { "example.com/cap/test": [{ "role": "admin" }] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": [
|
||||
"100.103.90.82/32",
|
||||
"100.110.121.96/32",
|
||||
"100.90.199.68/32",
|
||||
"fd7a:115c:a1e0::1737:7960/128",
|
||||
"fd7a:115c:a1e0::2d01:c747/128",
|
||||
"fd7a:115c:a1e0::9e37:5a52/128"
|
||||
],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "100.108.74.26/32", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "Net": "fd7a:115c:a1e0::b901:4a87/128", "Ports": { "First": 0, "Last": 65535 } }
|
||||
],
|
||||
"Caps": []
|
||||
},
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": [
|
||||
"100.103.90.82/32",
|
||||
"100.110.121.96/32",
|
||||
"100.90.199.68/32",
|
||||
"fd7a:115c:a1e0::1737:7960/128",
|
||||
"fd7a:115c:a1e0::2d01:c747/128",
|
||||
"fd7a:115c:a1e0::9e37:5a52/128"
|
||||
],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.108.74.26/32", "Cap": "example.com/cap/test", "Values": [{ "role": "admin" }] },
|
||||
{ "Dst": "fd7a:115c:a1e0::b901:4a87/128", "Cap": "example.com/cap/test", "Values": [{ "role": "admin" }] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7728836216590060,
|
||||
"StableID": "nf4dJTRQM321CNTRL",
|
||||
"Name": "user-kris.tail78f774.ts.net.",
|
||||
"User": 4538565228176803,
|
||||
"Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f",
|
||||
"KeyExpiry": "2026-08-19T14:09:34Z",
|
||||
"DiscoKey": "discokey:ee276d29d944b727d1749cd3938f210d3c30f1e2d2644fed60632fc0a3c95066",
|
||||
"Addresses": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"AllowedIPs": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:36065",
|
||||
"10.65.0.27:36065",
|
||||
"172.17.0.1:36065",
|
||||
"172.18.0.1:36065",
|
||||
"172.19.0.1:36065"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user-kris",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 40159 },
|
||||
{ "Proto": "peerapi6", "Port": 40159 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:09:34.803901523Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user-kris",
|
||||
"ComputedNameWithHost": "user-kris"
|
||||
},
|
||||
"UserProfile": { "ID": 4538565228176803, "LoginName": "kristoffer@dalby.cc", "DisplayName": "kristoffer" },
|
||||
"CapMap": { "example.com/cap/test": [{ "role": "admin" }] }
|
||||
}
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1840115676059256,
|
||||
"StableID": "nFzZ7giPNF11CNTRL",
|
||||
"Name": "user-mon.tail78f774.ts.net.",
|
||||
"User": 3982058329734709,
|
||||
"Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51",
|
||||
"KeyExpiry": "2026-08-19T14:09:00Z",
|
||||
"DiscoKey": "discokey:0fe29575d3fe2b01154e0d8f5b8fa1d2500a55fd2aa79a416f014f4c1e217e7b",
|
||||
"Addresses": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"AllowedIPs": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:49306",
|
||||
"10.65.0.27:49306",
|
||||
"172.17.0.1:49306",
|
||||
"172.18.0.1:49306",
|
||||
"172.19.0.1:49306"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user-mon",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 33201 },
|
||||
{ "Proto": "peerapi6", "Port": 33201 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:09:00.203639664Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user-mon",
|
||||
"ComputedNameWithHost": "user-mon"
|
||||
},
|
||||
"UserProfile": {
|
||||
"ID": 3982058329734709,
|
||||
"LoginName": "monitorpasskeykradalby@passkey",
|
||||
"DisplayName": "monitorpasskeykradalby"
|
||||
},
|
||||
"CapMap": { "example.com/cap/test": [{ "role": "admin" }] }
|
||||
}
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 539541576444929,
|
||||
"StableID": "nSq9YrqMD511CNTRL",
|
||||
"Name": "user1.tail78f774.ts.net.",
|
||||
"User": 4156223528223174,
|
||||
"Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743",
|
||||
"KeyExpiry": "2026-07-22T10:04:13Z",
|
||||
"DiscoKey": "discokey:e9a76408333d29ad7c495ff79483f15d0bae079bfebc20cffa35af12fe848518",
|
||||
"Addresses": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"AllowedIPs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:59336",
|
||||
"10.65.0.27:59336",
|
||||
"172.17.0.1:59336",
|
||||
"172.18.0.1:59336",
|
||||
"172.19.0.1:59336"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user1",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46708 },
|
||||
{ "Proto": "peerapi6", "Port": 46708 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:04:13.531671894Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user1",
|
||||
"ComputedNameWithHost": "user1"
|
||||
},
|
||||
"UserProfile": { "ID": 4156223528223174, "LoginName": "kratail2tid@passkey", "DisplayName": "kratail2tid" },
|
||||
"CapMap": { "example.com/cap/test": [{ "role": "admin" }] }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1092
hscontrol/policy/v2/testdata/grant_results/GRANT-F3.json
vendored
Normal file
1092
hscontrol/policy/v2/testdata/grant_results/GRANT-F3.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3774
hscontrol/policy/v2/testdata/grant_results/GRANT-F4.json
vendored
Normal file
3774
hscontrol/policy/v2/testdata/grant_results/GRANT-F4.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1067
hscontrol/policy/v2/testdata/grant_results/GRANT-G1.json
vendored
Normal file
1067
hscontrol/policy/v2/testdata/grant_results/GRANT-G1.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1081
hscontrol/policy/v2/testdata/grant_results/GRANT-G2.json
vendored
Normal file
1081
hscontrol/policy/v2/testdata/grant_results/GRANT-G2.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1056
hscontrol/policy/v2/testdata/grant_results/GRANT-G3.json
vendored
Normal file
1056
hscontrol/policy/v2/testdata/grant_results/GRANT-G3.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1070
hscontrol/policy/v2/testdata/grant_results/GRANT-G4.json
vendored
Normal file
1070
hscontrol/policy/v2/testdata/grant_results/GRANT-G4.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2842
hscontrol/policy/v2/testdata/grant_results/GRANT-G5.json
vendored
Normal file
2842
hscontrol/policy/v2/testdata/grant_results/GRANT-G5.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2868
hscontrol/policy/v2/testdata/grant_results/GRANT-G6.json
vendored
Normal file
2868
hscontrol/policy/v2/testdata/grant_results/GRANT-G6.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
48
hscontrol/policy/v2/testdata/grant_results/GRANT-H1.json
vendored
Normal file
48
hscontrol/policy/v2/testdata/grant_results/GRANT-H1.json
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"test_id": "GRANT-H1",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T00:36:36Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_h1.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["*"],
|
||||
"app": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["*"], "dst": ["*"], "app": {} }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "ip and app can not both be empty" }
|
||||
}
|
||||
}
|
||||
50
hscontrol/policy/v2/testdata/grant_results/GRANT-H10.json
vendored
Normal file
50
hscontrol/policy/v2/testdata/grant_results/GRANT-H10.json
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"test_id": "GRANT-H10",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T00:37:44Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_h10.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["autogroup:self"],
|
||||
"dst": ["*"],
|
||||
"app": {
|
||||
"example.com/cap/test": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["autogroup:self"], "dst": ["*"], "app": { "example.com/cap/test": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "\"autogroup:self\" not valid on the src side of a rule" }
|
||||
}
|
||||
}
|
||||
2793
hscontrol/policy/v2/testdata/grant_results/GRANT-H2.json
vendored
Normal file
2793
hscontrol/policy/v2/testdata/grant_results/GRANT-H2.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
48
hscontrol/policy/v2/testdata/grant_results/GRANT-H3.json
vendored
Normal file
48
hscontrol/policy/v2/testdata/grant_results/GRANT-H3.json
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"test_id": "GRANT-H3",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T00:36:53Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_h3.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["*"],
|
||||
"ip": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["*"], "dst": ["*"], "ip": [] }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "ip and app can not both be empty" }
|
||||
}
|
||||
}
|
||||
486
hscontrol/policy/v2/testdata/grant_results/GRANT-H4.json
vendored
Normal file
486
hscontrol/policy/v2/testdata/grant_results/GRANT-H4.json
vendored
Normal file
@@ -0,0 +1,486 @@
|
||||
{
|
||||
"test_id": "GRANT-H4",
|
||||
"timestamp": "2026-02-23T00:36:53Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_h4.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": [],
|
||||
"dst": ["*"],
|
||||
"app": {
|
||||
"example.com/cap/test": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": [], "dst": ["*"], "app": { "example.com/cap/test": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
486
hscontrol/policy/v2/testdata/grant_results/GRANT-H5.json
vendored
Normal file
486
hscontrol/policy/v2/testdata/grant_results/GRANT-H5.json
vendored
Normal file
@@ -0,0 +1,486 @@
|
||||
{
|
||||
"test_id": "GRANT-H5",
|
||||
"timestamp": "2026-02-23T00:37:10Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_h5.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": [],
|
||||
"app": {
|
||||
"example.com/cap/test": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["*"], "dst": [], "app": { "example.com/cap/test": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
651
hscontrol/policy/v2/testdata/grant_results/GRANT-H6.json
vendored
Normal file
651
hscontrol/policy/v2/testdata/grant_results/GRANT-H6.json
vendored
Normal file
@@ -0,0 +1,651 @@
|
||||
{
|
||||
"test_id": "GRANT-H6",
|
||||
"timestamp": "2026-02-23T00:37:27Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_h6.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["group:empty"],
|
||||
"dst": ["*"],
|
||||
"app": {
|
||||
"example.com/cap/test": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["group:empty"], "dst": ["*"], "app": { "example.com/cap/test": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": [],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"],
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": [],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.85.66.106/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::7c37:426a/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": [],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"],
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": [],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.92.142.61/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::3e37:8e3d/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": [],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"],
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": [],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.83.200.69/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::c537:c845/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": [],
|
||||
"CapGrant": [
|
||||
{ "Dsts": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"], "CapMap": { "example.com/cap/test": [{}] } }
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": [],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.103.8.15/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::5b37:80f/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": [],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": [],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.108.74.26/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::b901:4a87/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": [],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": [],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.110.121.96/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::1737:7960/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": [],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": [],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.103.90.82/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::9e37:5a52/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": [],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"CapMap": { "example.com/cap/test": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": [],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.90.199.68/32", "Cap": "example.com/cap/test", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::2d01:c747/128", "Cap": "example.com/cap/test", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
50
hscontrol/policy/v2/testdata/grant_results/GRANT-H7.json
vendored
Normal file
50
hscontrol/policy/v2/testdata/grant_results/GRANT-H7.json
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"test_id": "GRANT-H7",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T00:37:44Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_h7.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["tag:nonexistent"],
|
||||
"dst": ["*"],
|
||||
"app": {
|
||||
"example.com/cap/test": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["tag:nonexistent"], "dst": ["*"], "app": { "example.com/cap/test": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "src=tag not found: \"tag:nonexistent\"" }
|
||||
}
|
||||
}
|
||||
47
hscontrol/policy/v2/testdata/grant_results/GRANT-H8.json
vendored
Normal file
47
hscontrol/policy/v2/testdata/grant_results/GRANT-H8.json
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"test_id": "GRANT-H8",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T00:37:44Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_h8.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["*"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["*"], "dst": ["*"] }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "ip and app can not both be empty" }
|
||||
}
|
||||
}
|
||||
50
hscontrol/policy/v2/testdata/grant_results/GRANT-H9.json
vendored
Normal file
50
hscontrol/policy/v2/testdata/grant_results/GRANT-H9.json
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"test_id": "GRANT-H9",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T00:37:44Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_h9.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["autogroup:self"],
|
||||
"app": {
|
||||
"example.com/cap/test": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["*"], "dst": ["autogroup:self"], "app": { "example.com/cap/test": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "autogroup:self can only be used with users, groups, or supported autogroups" }
|
||||
}
|
||||
}
|
||||
1020
hscontrol/policy/v2/testdata/grant_results/GRANT-I1.json
vendored
Normal file
1020
hscontrol/policy/v2/testdata/grant_results/GRANT-I1.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1021
hscontrol/policy/v2/testdata/grant_results/GRANT-I2.json
vendored
Normal file
1021
hscontrol/policy/v2/testdata/grant_results/GRANT-I2.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1020
hscontrol/policy/v2/testdata/grant_results/GRANT-I3.json
vendored
Normal file
1020
hscontrol/policy/v2/testdata/grant_results/GRANT-I3.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
49
hscontrol/policy/v2/testdata/grant_results/GRANT-I4.json
vendored
Normal file
49
hscontrol/policy/v2/testdata/grant_results/GRANT-I4.json
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"test_id": "GRANT-I4",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T00:38:35Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_i4.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["10.33.0.0/16"],
|
||||
"via": ["autogroup:tagged"],
|
||||
"ip": ["*"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["*"], "dst": ["10.33.0.0/16"], "via": ["autogroup:tagged"], "ip": ["*"] }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "via can only be a tag" }
|
||||
}
|
||||
}
|
||||
1020
hscontrol/policy/v2/testdata/grant_results/GRANT-J1.json
vendored
Normal file
1020
hscontrol/policy/v2/testdata/grant_results/GRANT-J1.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1020
hscontrol/policy/v2/testdata/grant_results/GRANT-J2.json
vendored
Normal file
1020
hscontrol/policy/v2/testdata/grant_results/GRANT-J2.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1019
hscontrol/policy/v2/testdata/grant_results/GRANT-J3.json
vendored
Normal file
1019
hscontrol/policy/v2/testdata/grant_results/GRANT-J3.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1063
hscontrol/policy/v2/testdata/grant_results/GRANT-J4.json
vendored
Normal file
1063
hscontrol/policy/v2/testdata/grant_results/GRANT-J4.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1020
hscontrol/policy/v2/testdata/grant_results/GRANT-J5.json
vendored
Normal file
1020
hscontrol/policy/v2/testdata/grant_results/GRANT-J5.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1019
hscontrol/policy/v2/testdata/grant_results/GRANT-J6.json
vendored
Normal file
1019
hscontrol/policy/v2/testdata/grant_results/GRANT-J6.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
48
hscontrol/policy/v2/testdata/grant_results/GRANT-J7.json
vendored
Normal file
48
hscontrol/policy/v2/testdata/grant_results/GRANT-J7.json
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"test_id": "GRANT-J7",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T00:40:17Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_j7.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["tag:server"],
|
||||
"ip": ["icmp"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["*"], "dst": ["tag:server"], "ip": ["icmp"] }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "port range \"icmp\": invalid first integer" }
|
||||
}
|
||||
}
|
||||
2775
hscontrol/policy/v2/testdata/grant_results/GRANT-K1.json
vendored
Normal file
2775
hscontrol/policy/v2/testdata/grant_results/GRANT-K1.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
50
hscontrol/policy/v2/testdata/grant_results/GRANT-K10.json
vendored
Normal file
50
hscontrol/policy/v2/testdata/grant_results/GRANT-K10.json
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"test_id": "GRANT-K10",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T02:55:30Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "grant_policies/grant_k10.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["*"],
|
||||
"app": {
|
||||
"tailscale.com/cap/funnel": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["*"], "dst": ["*"], "app": { "tailscale.com/cap/funnel": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "capability name must not be in the tailscale.com domain" }
|
||||
}
|
||||
}
|
||||
4090
hscontrol/policy/v2/testdata/grant_results/GRANT-K11.json
vendored
Normal file
4090
hscontrol/policy/v2/testdata/grant_results/GRANT-K11.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
999
hscontrol/policy/v2/testdata/grant_results/GRANT-K12.json
vendored
Normal file
999
hscontrol/policy/v2/testdata/grant_results/GRANT-K12.json
vendored
Normal file
@@ -0,0 +1,999 @@
|
||||
{
|
||||
"test_id": "GRANT-K12",
|
||||
"timestamp": "2026-02-23T02:55:55Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "grant_policies/grant_k12.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["10.33.0.0/16"],
|
||||
"via": ["tag:router"],
|
||||
"app": {
|
||||
"example.com/cap/subnet-access": [
|
||||
{
|
||||
"level": "admin"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["10.33.0.0/16"],
|
||||
"via": ["tag:router"],
|
||||
"app": { "example.com/cap/subnet-access": [{ "level": "admin" }] }
|
||||
}
|
||||
],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7489538288452506,
|
||||
"StableID": "nTPEqJU2V121CNTRL",
|
||||
"Name": "subnet-router.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c",
|
||||
"DiscoKey": "discokey:861e592754ea9209e6ab02a511369b304e9094c6d636c270d746d9ddb954534d",
|
||||
"Addresses": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"],
|
||||
"AllowedIPs": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128", "10.33.0.0/16"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:45900",
|
||||
"10.65.0.27:45900",
|
||||
"172.17.0.1:45900",
|
||||
"172.18.0.1:45900",
|
||||
"172.19.0.1:45900"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "subnet-router",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 63250 },
|
||||
{ "Proto": "peerapi6", "Port": 63250 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:15.731478784Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:router"],
|
||||
"PrimaryRoutes": ["10.33.0.0/16"],
|
||||
"Online": true,
|
||||
"ComputedName": "subnet-router",
|
||||
"ComputedNameWithHost": "subnet-router"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 4041918547170221,
|
||||
"StableID": "ngCb76MbZY11CNTRL",
|
||||
"Name": "exit-node.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269",
|
||||
"DiscoKey": "discokey:e067b4e63320882c9a744baff8b1d9de50fad897586d9ac2033723343a66e946",
|
||||
"Addresses": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"],
|
||||
"AllowedIPs": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:38956",
|
||||
"10.65.0.27:38956",
|
||||
"172.17.0.1:38956",
|
||||
"172.18.0.1:38956",
|
||||
"172.19.0.1:38956"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "exit-node",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 37000 },
|
||||
{ "Proto": "peerapi6", "Port": 37000 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:20.566112173Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:exit"],
|
||||
"Online": true,
|
||||
"ComputedName": "exit-node",
|
||||
"ComputedNameWithHost": "exit-node"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 4031348162889210,
|
||||
"StableID": "nf7BTTgoUY11CNTRL",
|
||||
"Name": "tagged-client.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844",
|
||||
"DiscoKey": "discokey:f3f4cc194a00c26e6bd6ca6947a86ba8609fc759c469922205f1db9a5ab78c46",
|
||||
"Addresses": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"],
|
||||
"AllowedIPs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58209",
|
||||
"10.65.0.27:58209",
|
||||
"172.17.0.1:58209",
|
||||
"172.18.0.1:58209",
|
||||
"172.19.0.1:58209"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-client",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 41378 },
|
||||
{ "Proto": "peerapi6", "Port": 41378 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:11.017324028Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:client"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-client",
|
||||
"ComputedNameWithHost": "tagged-client"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 301794218943819,
|
||||
"StableID": "neJag6dgM311CNTRL",
|
||||
"Name": "tagged-prod.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e",
|
||||
"DiscoKey": "discokey:196d9d1d9f0e2d5c5da0dc70164b6752bf8ad896991b7038b2272cb0bf8bf630",
|
||||
"Addresses": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"],
|
||||
"AllowedIPs": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:46099",
|
||||
"10.65.0.27:46099",
|
||||
"172.17.0.1:46099",
|
||||
"172.18.0.1:46099",
|
||||
"172.19.0.1:46099"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-prod",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 37678 },
|
||||
{ "Proto": "peerapi6", "Port": 37678 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:03:12.89283153Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:prod"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-prod",
|
||||
"ComputedNameWithHost": "tagged-prod"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7728836216590060,
|
||||
"StableID": "nf4dJTRQM321CNTRL",
|
||||
"Name": "user-kris.tail78f774.ts.net.",
|
||||
"User": 4538565228176803,
|
||||
"Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f",
|
||||
"KeyExpiry": "2026-08-19T14:09:34Z",
|
||||
"DiscoKey": "discokey:ee276d29d944b727d1749cd3938f210d3c30f1e2d2644fed60632fc0a3c95066",
|
||||
"Addresses": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"AllowedIPs": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:36065",
|
||||
"10.65.0.27:36065",
|
||||
"172.17.0.1:36065",
|
||||
"172.18.0.1:36065",
|
||||
"172.19.0.1:36065"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user-kris",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 40159 },
|
||||
{ "Proto": "peerapi6", "Port": 40159 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:09:34.803901523Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user-kris",
|
||||
"ComputedNameWithHost": "user-kris"
|
||||
},
|
||||
"UserProfile": { "ID": 4538565228176803, "LoginName": "kristoffer@dalby.cc", "DisplayName": "kristoffer" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1840115676059256,
|
||||
"StableID": "nFzZ7giPNF11CNTRL",
|
||||
"Name": "user-mon.tail78f774.ts.net.",
|
||||
"User": 3982058329734709,
|
||||
"Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51",
|
||||
"KeyExpiry": "2026-08-19T14:09:00Z",
|
||||
"DiscoKey": "discokey:0fe29575d3fe2b01154e0d8f5b8fa1d2500a55fd2aa79a416f014f4c1e217e7b",
|
||||
"Addresses": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"AllowedIPs": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:49306",
|
||||
"10.65.0.27:49306",
|
||||
"172.17.0.1:49306",
|
||||
"172.18.0.1:49306",
|
||||
"172.19.0.1:49306"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user-mon",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 33201 },
|
||||
{ "Proto": "peerapi6", "Port": 33201 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:09:00.203639664Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user-mon",
|
||||
"ComputedNameWithHost": "user-mon"
|
||||
},
|
||||
"UserProfile": {
|
||||
"ID": 3982058329734709,
|
||||
"LoginName": "monitorpasskeykradalby@passkey",
|
||||
"DisplayName": "monitorpasskeykradalby"
|
||||
},
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 539541576444929,
|
||||
"StableID": "nSq9YrqMD511CNTRL",
|
||||
"Name": "user1.tail78f774.ts.net.",
|
||||
"User": 4156223528223174,
|
||||
"Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743",
|
||||
"KeyExpiry": "2026-07-22T10:04:13Z",
|
||||
"DiscoKey": "discokey:e9a76408333d29ad7c495ff79483f15d0bae079bfebc20cffa35af12fe848518",
|
||||
"Addresses": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"AllowedIPs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:59336",
|
||||
"10.65.0.27:59336",
|
||||
"172.17.0.1:59336",
|
||||
"172.18.0.1:59336",
|
||||
"172.19.0.1:59336"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user1",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46708 },
|
||||
{ "Proto": "peerapi6", "Port": 46708 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:04:13.531671894Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user1",
|
||||
"ComputedNameWithHost": "user1"
|
||||
},
|
||||
"UserProfile": { "ID": 4156223528223174, "LoginName": "kratail2tid@passkey", "DisplayName": "kratail2tid" },
|
||||
"CapMap": null
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7489538288452506,
|
||||
"StableID": "nTPEqJU2V121CNTRL",
|
||||
"Name": "subnet-router.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c",
|
||||
"DiscoKey": "discokey:861e592754ea9209e6ab02a511369b304e9094c6d636c270d746d9ddb954534d",
|
||||
"Addresses": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"],
|
||||
"AllowedIPs": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128", "10.33.0.0/16"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:45900",
|
||||
"10.65.0.27:45900",
|
||||
"172.17.0.1:45900",
|
||||
"172.18.0.1:45900",
|
||||
"172.19.0.1:45900"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "subnet-router",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 63250 },
|
||||
{ "Proto": "peerapi6", "Port": 63250 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:15.731478784Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:router"],
|
||||
"PrimaryRoutes": ["10.33.0.0/16"],
|
||||
"Online": true,
|
||||
"ComputedName": "subnet-router",
|
||||
"ComputedNameWithHost": "subnet-router"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7489538288452506,
|
||||
"StableID": "nTPEqJU2V121CNTRL",
|
||||
"Name": "subnet-router.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c",
|
||||
"DiscoKey": "discokey:861e592754ea9209e6ab02a511369b304e9094c6d636c270d746d9ddb954534d",
|
||||
"Addresses": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"],
|
||||
"AllowedIPs": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128", "10.33.0.0/16"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:45900",
|
||||
"10.65.0.27:45900",
|
||||
"172.17.0.1:45900",
|
||||
"172.18.0.1:45900",
|
||||
"172.19.0.1:45900"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "subnet-router",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 63250 },
|
||||
{ "Proto": "peerapi6", "Port": 63250 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:15.731478784Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:router"],
|
||||
"PrimaryRoutes": ["10.33.0.0/16"],
|
||||
"Online": true,
|
||||
"ComputedName": "subnet-router",
|
||||
"ComputedNameWithHost": "subnet-router"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7489538288452506,
|
||||
"StableID": "nTPEqJU2V121CNTRL",
|
||||
"Name": "subnet-router.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c",
|
||||
"DiscoKey": "discokey:861e592754ea9209e6ab02a511369b304e9094c6d636c270d746d9ddb954534d",
|
||||
"Addresses": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"],
|
||||
"AllowedIPs": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128", "10.33.0.0/16"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:45900",
|
||||
"10.65.0.27:45900",
|
||||
"172.17.0.1:45900",
|
||||
"172.18.0.1:45900",
|
||||
"172.19.0.1:45900"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "subnet-router",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 63250 },
|
||||
{ "Proto": "peerapi6", "Port": 63250 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:15.731478784Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:router"],
|
||||
"PrimaryRoutes": ["10.33.0.0/16"],
|
||||
"Online": true,
|
||||
"ComputedName": "subnet-router",
|
||||
"ComputedNameWithHost": "subnet-router"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7489538288452506,
|
||||
"StableID": "nTPEqJU2V121CNTRL",
|
||||
"Name": "subnet-router.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c",
|
||||
"DiscoKey": "discokey:861e592754ea9209e6ab02a511369b304e9094c6d636c270d746d9ddb954534d",
|
||||
"Addresses": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"],
|
||||
"AllowedIPs": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128", "10.33.0.0/16"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:45900",
|
||||
"10.65.0.27:45900",
|
||||
"172.17.0.1:45900",
|
||||
"172.18.0.1:45900",
|
||||
"172.19.0.1:45900"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "subnet-router",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 63250 },
|
||||
{ "Proto": "peerapi6", "Port": 63250 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:15.731478784Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:router"],
|
||||
"PrimaryRoutes": ["10.33.0.0/16"],
|
||||
"Online": true,
|
||||
"ComputedName": "subnet-router",
|
||||
"ComputedNameWithHost": "subnet-router"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7489538288452506,
|
||||
"StableID": "nTPEqJU2V121CNTRL",
|
||||
"Name": "subnet-router.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c",
|
||||
"DiscoKey": "discokey:861e592754ea9209e6ab02a511369b304e9094c6d636c270d746d9ddb954534d",
|
||||
"Addresses": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"],
|
||||
"AllowedIPs": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128", "10.33.0.0/16"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:45900",
|
||||
"10.65.0.27:45900",
|
||||
"172.17.0.1:45900",
|
||||
"172.18.0.1:45900",
|
||||
"172.19.0.1:45900"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "subnet-router",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 63250 },
|
||||
{ "Proto": "peerapi6", "Port": 63250 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:15.731478784Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:router"],
|
||||
"PrimaryRoutes": ["10.33.0.0/16"],
|
||||
"Online": true,
|
||||
"ComputedName": "subnet-router",
|
||||
"ComputedNameWithHost": "subnet-router"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7489538288452506,
|
||||
"StableID": "nTPEqJU2V121CNTRL",
|
||||
"Name": "subnet-router.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c",
|
||||
"DiscoKey": "discokey:861e592754ea9209e6ab02a511369b304e9094c6d636c270d746d9ddb954534d",
|
||||
"Addresses": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"],
|
||||
"AllowedIPs": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128", "10.33.0.0/16"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:45900",
|
||||
"10.65.0.27:45900",
|
||||
"172.17.0.1:45900",
|
||||
"172.18.0.1:45900",
|
||||
"172.19.0.1:45900"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "subnet-router",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 63250 },
|
||||
{ "Proto": "peerapi6", "Port": 63250 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:15.731478784Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:router"],
|
||||
"PrimaryRoutes": ["10.33.0.0/16"],
|
||||
"Online": true,
|
||||
"ComputedName": "subnet-router",
|
||||
"ComputedNameWithHost": "subnet-router"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1036
hscontrol/policy/v2/testdata/grant_results/GRANT-K13.json
vendored
Normal file
1036
hscontrol/policy/v2/testdata/grant_results/GRANT-K13.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
574
hscontrol/policy/v2/testdata/grant_results/GRANT-K14.json
vendored
Normal file
574
hscontrol/policy/v2/testdata/grant_results/GRANT-K14.json
vendored
Normal file
@@ -0,0 +1,574 @@
|
||||
{
|
||||
"test_id": "GRANT-K14",
|
||||
"timestamp": "2026-02-23T02:56:28Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "grant_policies/grant_k14.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["fd7a:115c:a1e0::c537:c845"],
|
||||
"dst": ["tag:server"],
|
||||
"ip": ["tcp:22"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["fd7a:115c:a1e0::c537:c845"], "dst": ["tag:server"], "ip": ["tcp:22"] }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["fd7a:115c:a1e0::c537:c845"],
|
||||
"DstPorts": [
|
||||
{ "IP": "100.108.74.26", "Ports": { "First": 22, "Last": 22 } },
|
||||
{ "IP": "fd7a:115c:a1e0::b901:4a87", "Ports": { "First": 22, "Last": 22 } }
|
||||
],
|
||||
"IPProto": [6]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6],
|
||||
"Srcs": ["fd7a:115c:a1e0::c537:c845/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "100.108.74.26/32", "Ports": { "First": 22, "Last": 22 } },
|
||||
{ "Net": "fd7a:115c:a1e0::b901:4a87/128", "Ports": { "First": 22, "Last": 22 } }
|
||||
],
|
||||
"Caps": []
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 4031348162889210,
|
||||
"StableID": "nf7BTTgoUY11CNTRL",
|
||||
"Name": "tagged-client.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844",
|
||||
"DiscoKey": "discokey:f3f4cc194a00c26e6bd6ca6947a86ba8609fc759c469922205f1db9a5ab78c46",
|
||||
"Addresses": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"],
|
||||
"AllowedIPs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58209",
|
||||
"10.65.0.27:58209",
|
||||
"172.17.0.1:58209",
|
||||
"172.18.0.1:58209",
|
||||
"172.19.0.1:58209"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-client",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 41378 },
|
||||
{ "Proto": "peerapi6", "Port": 41378 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:11.017324028Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:client"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-client",
|
||||
"ComputedNameWithHost": "tagged-client"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1014
hscontrol/policy/v2/testdata/grant_results/GRANT-K15.json
vendored
Normal file
1014
hscontrol/policy/v2/testdata/grant_results/GRANT-K15.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2801
hscontrol/policy/v2/testdata/grant_results/GRANT-K16.json
vendored
Normal file
2801
hscontrol/policy/v2/testdata/grant_results/GRANT-K16.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2801
hscontrol/policy/v2/testdata/grant_results/GRANT-K17.json
vendored
Normal file
2801
hscontrol/policy/v2/testdata/grant_results/GRANT-K17.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3130
hscontrol/policy/v2/testdata/grant_results/GRANT-K18.json
vendored
Normal file
3130
hscontrol/policy/v2/testdata/grant_results/GRANT-K18.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3155
hscontrol/policy/v2/testdata/grant_results/GRANT-K19.json
vendored
Normal file
3155
hscontrol/policy/v2/testdata/grant_results/GRANT-K19.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2775
hscontrol/policy/v2/testdata/grant_results/GRANT-K2.json
vendored
Normal file
2775
hscontrol/policy/v2/testdata/grant_results/GRANT-K2.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
653
hscontrol/policy/v2/testdata/grant_results/GRANT-K20.json
vendored
Normal file
653
hscontrol/policy/v2/testdata/grant_results/GRANT-K20.json
vendored
Normal file
@@ -0,0 +1,653 @@
|
||||
{
|
||||
"test_id": "GRANT-K20",
|
||||
"timestamp": "2026-02-23T02:58:08Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "grant_policies/grant_k20.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["user:*@passkey"],
|
||||
"dst": ["tag:server"],
|
||||
"ip": ["tcp:22"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["user:*@passkey"], "dst": ["tag:server"], "ip": ["tcp:22"] }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.103.90.82", "100.90.199.68", "fd7a:115c:a1e0::2d01:c747", "fd7a:115c:a1e0::9e37:5a52"],
|
||||
"DstPorts": [
|
||||
{ "IP": "100.108.74.26", "Ports": { "First": 22, "Last": 22 } },
|
||||
{ "IP": "fd7a:115c:a1e0::b901:4a87", "Ports": { "First": 22, "Last": 22 } }
|
||||
],
|
||||
"IPProto": [6]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6],
|
||||
"Srcs": [
|
||||
"100.103.90.82/32",
|
||||
"100.90.199.68/32",
|
||||
"fd7a:115c:a1e0::2d01:c747/128",
|
||||
"fd7a:115c:a1e0::9e37:5a52/128"
|
||||
],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "100.108.74.26/32", "Ports": { "First": 22, "Last": 22 } },
|
||||
{ "Net": "fd7a:115c:a1e0::b901:4a87/128", "Ports": { "First": 22, "Last": 22 } }
|
||||
],
|
||||
"Caps": []
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1840115676059256,
|
||||
"StableID": "nFzZ7giPNF11CNTRL",
|
||||
"Name": "user-mon.tail78f774.ts.net.",
|
||||
"User": 3982058329734709,
|
||||
"Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51",
|
||||
"KeyExpiry": "2026-08-19T14:09:00Z",
|
||||
"DiscoKey": "discokey:0fe29575d3fe2b01154e0d8f5b8fa1d2500a55fd2aa79a416f014f4c1e217e7b",
|
||||
"Addresses": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"AllowedIPs": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:49306",
|
||||
"10.65.0.27:49306",
|
||||
"172.17.0.1:49306",
|
||||
"172.18.0.1:49306",
|
||||
"172.19.0.1:49306"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user-mon",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 33201 },
|
||||
{ "Proto": "peerapi6", "Port": 33201 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:09:00.203639664Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user-mon",
|
||||
"ComputedNameWithHost": "user-mon"
|
||||
},
|
||||
"UserProfile": {
|
||||
"ID": 3982058329734709,
|
||||
"LoginName": "monitorpasskeykradalby@passkey",
|
||||
"DisplayName": "monitorpasskeykradalby"
|
||||
},
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 539541576444929,
|
||||
"StableID": "nSq9YrqMD511CNTRL",
|
||||
"Name": "user1.tail78f774.ts.net.",
|
||||
"User": 4156223528223174,
|
||||
"Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743",
|
||||
"KeyExpiry": "2026-07-22T10:04:13Z",
|
||||
"DiscoKey": "discokey:e9a76408333d29ad7c495ff79483f15d0bae079bfebc20cffa35af12fe848518",
|
||||
"Addresses": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"AllowedIPs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:59336",
|
||||
"10.65.0.27:59336",
|
||||
"172.17.0.1:59336",
|
||||
"172.18.0.1:59336",
|
||||
"172.19.0.1:59336"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user1",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46708 },
|
||||
{ "Proto": "peerapi6", "Port": 46708 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:04:13.531671894Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user1",
|
||||
"ComputedNameWithHost": "user1"
|
||||
},
|
||||
"UserProfile": { "ID": 4156223528223174, "LoginName": "kratail2tid@passkey", "DisplayName": "kratail2tid" },
|
||||
"CapMap": null
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1506
hscontrol/policy/v2/testdata/grant_results/GRANT-K21.json
vendored
Normal file
1506
hscontrol/policy/v2/testdata/grant_results/GRANT-K21.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1019
hscontrol/policy/v2/testdata/grant_results/GRANT-K22.json
vendored
Normal file
1019
hscontrol/policy/v2/testdata/grant_results/GRANT-K22.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
48
hscontrol/policy/v2/testdata/grant_results/GRANT-K23.json
vendored
Normal file
48
hscontrol/policy/v2/testdata/grant_results/GRANT-K23.json
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"test_id": "GRANT-K23",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T02:59:03Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "grant_policies/grant_k23.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["tag:server"],
|
||||
"ip": ["tcp:0"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["*"], "dst": ["tag:server"], "ip": ["tcp:0"] }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "port range \"0\": first port must be >0, or use '*' for wildcard" }
|
||||
}
|
||||
}
|
||||
2817
hscontrol/policy/v2/testdata/grant_results/GRANT-K24.json
vendored
Normal file
2817
hscontrol/policy/v2/testdata/grant_results/GRANT-K24.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2817
hscontrol/policy/v2/testdata/grant_results/GRANT-K25.json
vendored
Normal file
2817
hscontrol/policy/v2/testdata/grant_results/GRANT-K25.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2036
hscontrol/policy/v2/testdata/grant_results/GRANT-K26.json
vendored
Normal file
2036
hscontrol/policy/v2/testdata/grant_results/GRANT-K26.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
551
hscontrol/policy/v2/testdata/grant_results/GRANT-K27.json
vendored
Normal file
551
hscontrol/policy/v2/testdata/grant_results/GRANT-K27.json
vendored
Normal file
@@ -0,0 +1,551 @@
|
||||
{
|
||||
"test_id": "GRANT-K27",
|
||||
"timestamp": "2026-02-23T02:59:53Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "grant_policies/grant_k27.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["autogroup:member"],
|
||||
"dst": ["autogroup:self"],
|
||||
"app": {
|
||||
"example.com/cap/self-service": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [
|
||||
{ "src": ["autogroup:member"], "dst": ["autogroup:self"], "app": { "example.com/cap/self-service": [{}] } }
|
||||
],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"CapMap": { "example.com/cap/self-service": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.110.121.96/32", "Cap": "example.com/cap/self-service", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::1737:7960/128", "Cap": "example.com/cap/self-service", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"CapMap": { "example.com/cap/self-service": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.103.90.82/32", "Cap": "example.com/cap/self-service", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::9e37:5a52/128", "Cap": "example.com/cap/self-service", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"CapMap": { "example.com/cap/self-service": [{}] }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.90.199.68/32", "Cap": "example.com/cap/self-service", "Values": [{}] },
|
||||
{ "Dst": "fd7a:115c:a1e0::2d01:c747/128", "Cap": "example.com/cap/self-service", "Values": [{}] }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
694
hscontrol/policy/v2/testdata/grant_results/GRANT-K28.json
vendored
Normal file
694
hscontrol/policy/v2/testdata/grant_results/GRANT-K28.json
vendored
Normal file
@@ -0,0 +1,694 @@
|
||||
{
|
||||
"test_id": "GRANT-K28",
|
||||
"timestamp": "2026-02-23T03:00:09Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "grant_policies/grant_k28.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["autogroup:member"],
|
||||
"dst": ["autogroup:self"],
|
||||
"ip": ["*"],
|
||||
"app": {
|
||||
"tailscale.com/cap/drive": [
|
||||
{
|
||||
"shares": ["*"],
|
||||
"access": "rw"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [
|
||||
{
|
||||
"src": ["autogroup:member"],
|
||||
"dst": ["autogroup:self"],
|
||||
"ip": ["*"],
|
||||
"app": { "tailscale.com/cap/drive": [{ "shares": ["*"], "access": "rw" }] }
|
||||
}
|
||||
],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"],
|
||||
"DstPorts": [
|
||||
{ "IP": "100.110.121.96", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "IP": "fd7a:115c:a1e0::1737:7960", "Ports": { "First": 0, "Last": 65535 } }
|
||||
]
|
||||
},
|
||||
{
|
||||
"SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"CapMap": { "tailscale.com/cap/drive": [{ "shares": ["*"], "access": "rw" }] }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"SrcIPs": ["100.110.121.96", "fd7a:115c:a1e0::1737:7960"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"CapMap": { "tailscale.com/cap/drive-sharer": null }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "100.110.121.96/32", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "Net": "fd7a:115c:a1e0::1737:7960/128", "Ports": { "First": 0, "Last": 65535 } }
|
||||
],
|
||||
"Caps": []
|
||||
},
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{
|
||||
"Dst": "100.110.121.96/32",
|
||||
"Cap": "tailscale.com/cap/drive",
|
||||
"Values": [{ "shares": ["*"], "access": "rw" }]
|
||||
},
|
||||
{
|
||||
"Dst": "fd7a:115c:a1e0::1737:7960/128",
|
||||
"Cap": "tailscale.com/cap/drive",
|
||||
"Values": [{ "shares": ["*"], "access": "rw" }]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.110.121.96/32", "Cap": "tailscale.com/cap/drive-sharer", "Values": null },
|
||||
{ "Dst": "fd7a:115c:a1e0::1737:7960/128", "Cap": "tailscale.com/cap/drive-sharer", "Values": null }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"],
|
||||
"DstPorts": [
|
||||
{ "IP": "100.103.90.82", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "IP": "fd7a:115c:a1e0::9e37:5a52", "Ports": { "First": 0, "Last": 65535 } }
|
||||
]
|
||||
},
|
||||
{
|
||||
"SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"CapMap": { "tailscale.com/cap/drive": [{ "shares": ["*"], "access": "rw" }] }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"SrcIPs": ["100.103.90.82", "fd7a:115c:a1e0::9e37:5a52"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"CapMap": { "tailscale.com/cap/drive-sharer": null }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "100.103.90.82/32", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "Net": "fd7a:115c:a1e0::9e37:5a52/128", "Ports": { "First": 0, "Last": 65535 } }
|
||||
],
|
||||
"Caps": []
|
||||
},
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{
|
||||
"Dst": "100.103.90.82/32",
|
||||
"Cap": "tailscale.com/cap/drive",
|
||||
"Values": [{ "shares": ["*"], "access": "rw" }]
|
||||
},
|
||||
{
|
||||
"Dst": "fd7a:115c:a1e0::9e37:5a52/128",
|
||||
"Cap": "tailscale.com/cap/drive",
|
||||
"Values": [{ "shares": ["*"], "access": "rw" }]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.103.90.82/32", "Cap": "tailscale.com/cap/drive-sharer", "Values": null },
|
||||
{ "Dst": "fd7a:115c:a1e0::9e37:5a52/128", "Cap": "tailscale.com/cap/drive-sharer", "Values": null }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"],
|
||||
"DstPorts": [
|
||||
{ "IP": "100.90.199.68", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "IP": "fd7a:115c:a1e0::2d01:c747", "Ports": { "First": 0, "Last": 65535 } }
|
||||
]
|
||||
},
|
||||
{
|
||||
"SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"CapMap": { "tailscale.com/cap/drive": [{ "shares": ["*"], "access": "rw" }] }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"SrcIPs": ["100.90.199.68", "fd7a:115c:a1e0::2d01:c747"],
|
||||
"CapGrant": [
|
||||
{
|
||||
"Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"CapMap": { "tailscale.com/cap/drive-sharer": null }
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "100.90.199.68/32", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "Net": "fd7a:115c:a1e0::2d01:c747/128", "Ports": { "First": 0, "Last": 65535 } }
|
||||
],
|
||||
"Caps": []
|
||||
},
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{
|
||||
"Dst": "100.90.199.68/32",
|
||||
"Cap": "tailscale.com/cap/drive",
|
||||
"Values": [{ "shares": ["*"], "access": "rw" }]
|
||||
},
|
||||
{
|
||||
"Dst": "fd7a:115c:a1e0::2d01:c747/128",
|
||||
"Cap": "tailscale.com/cap/drive",
|
||||
"Values": [{ "shares": ["*"], "access": "rw" }]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [],
|
||||
"Caps": [
|
||||
{ "Dst": "100.90.199.68/32", "Cap": "tailscale.com/cap/drive-sharer", "Values": null },
|
||||
{ "Dst": "fd7a:115c:a1e0::2d01:c747/128", "Cap": "tailscale.com/cap/drive-sharer", "Values": null }
|
||||
]
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
478
hscontrol/policy/v2/testdata/grant_results/GRANT-K29.json
vendored
Normal file
478
hscontrol/policy/v2/testdata/grant_results/GRANT-K29.json
vendored
Normal file
@@ -0,0 +1,478 @@
|
||||
{
|
||||
"test_id": "GRANT-K29",
|
||||
"timestamp": "2026-02-23T03:00:26Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "grant_policies/grant_k29.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": []
|
||||
},
|
||||
"grants_section": [],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
2824
hscontrol/policy/v2/testdata/grant_results/GRANT-K3.json
vendored
Normal file
2824
hscontrol/policy/v2/testdata/grant_results/GRANT-K3.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
51
hscontrol/policy/v2/testdata/grant_results/GRANT-K30.json
vendored
Normal file
51
hscontrol/policy/v2/testdata/grant_results/GRANT-K30.json
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"test_id": "GRANT-K30",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T03:00:42Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "grant_policies/grant_k30.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["10.33.0.0/16"],
|
||||
"via": ["tag:router", "tag:nonexistent"],
|
||||
"ip": ["*"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [
|
||||
{ "src": ["*"], "dst": ["10.33.0.0/16"], "via": ["tag:router", "tag:nonexistent"], "ip": ["*"] }
|
||||
],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "tag \"tag:nonexistent\" not found" }
|
||||
}
|
||||
}
|
||||
1048
hscontrol/policy/v2/testdata/grant_results/GRANT-K4.json
vendored
Normal file
1048
hscontrol/policy/v2/testdata/grant_results/GRANT-K4.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1391
hscontrol/policy/v2/testdata/grant_results/GRANT-K5.json
vendored
Normal file
1391
hscontrol/policy/v2/testdata/grant_results/GRANT-K5.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
999
hscontrol/policy/v2/testdata/grant_results/GRANT-K6.json
vendored
Normal file
999
hscontrol/policy/v2/testdata/grant_results/GRANT-K6.json
vendored
Normal file
@@ -0,0 +1,999 @@
|
||||
{
|
||||
"test_id": "GRANT-K6",
|
||||
"timestamp": "2026-02-23T02:55:13Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "grant_policies/grant_k6.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["autogroup:danger-all"],
|
||||
"dst": ["tag:server"],
|
||||
"ip": ["tcp:22"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["autogroup:danger-all"], "dst": ["tag:server"], "ip": ["tcp:22"] }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["*"],
|
||||
"DstPorts": [
|
||||
{ "IP": "100.108.74.26", "Ports": { "First": 22, "Last": 22 } },
|
||||
{ "IP": "fd7a:115c:a1e0::b901:4a87", "Ports": { "First": 22, "Last": 22 } }
|
||||
],
|
||||
"IPProto": [6]
|
||||
}
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6],
|
||||
"Srcs": ["0.0.0.0/0", "::/0"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "100.108.74.26/32", "Ports": { "First": 22, "Last": 22 } },
|
||||
{ "Net": "fd7a:115c:a1e0::b901:4a87/128", "Ports": { "First": 22, "Last": 22 } }
|
||||
],
|
||||
"Caps": []
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 4041918547170221,
|
||||
"StableID": "ngCb76MbZY11CNTRL",
|
||||
"Name": "exit-node.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:90f4a7b9dc024f1ddec414a49de2aa7611a2dd86efc9d7bae30862ad7c954269",
|
||||
"DiscoKey": "discokey:e067b4e63320882c9a744baff8b1d9de50fad897586d9ac2033723343a66e946",
|
||||
"Addresses": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"],
|
||||
"AllowedIPs": ["100.85.66.106/32", "fd7a:115c:a1e0::7c37:426a/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:38956",
|
||||
"10.65.0.27:38956",
|
||||
"172.17.0.1:38956",
|
||||
"172.18.0.1:38956",
|
||||
"172.19.0.1:38956"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "exit-node",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 37000 },
|
||||
{ "Proto": "peerapi6", "Port": 37000 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:20.566112173Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:exit"],
|
||||
"Online": true,
|
||||
"ComputedName": "exit-node",
|
||||
"ComputedNameWithHost": "exit-node"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7489538288452506,
|
||||
"StableID": "nTPEqJU2V121CNTRL",
|
||||
"Name": "subnet-router.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:887ae2351c09c3b952f1f42bdac4095ec396ebf15824a746e4193c003e9c8e3c",
|
||||
"DiscoKey": "discokey:861e592754ea9209e6ab02a511369b304e9094c6d636c270d746d9ddb954534d",
|
||||
"Addresses": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128"],
|
||||
"AllowedIPs": ["100.92.142.61/32", "fd7a:115c:a1e0::3e37:8e3d/128", "10.33.0.0/16"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:45900",
|
||||
"10.65.0.27:45900",
|
||||
"172.17.0.1:45900",
|
||||
"172.18.0.1:45900",
|
||||
"172.19.0.1:45900"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "subnet-router",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 63250 },
|
||||
{ "Proto": "peerapi6", "Port": 63250 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:15.731478784Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:router"],
|
||||
"PrimaryRoutes": ["10.33.0.0/16"],
|
||||
"Online": true,
|
||||
"ComputedName": "subnet-router",
|
||||
"ComputedNameWithHost": "subnet-router"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 4031348162889210,
|
||||
"StableID": "nf7BTTgoUY11CNTRL",
|
||||
"Name": "tagged-client.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:3011e53353e49142ea56ae11f81e0dceae0d667093d04ee086dcb1e9c5d3c844",
|
||||
"DiscoKey": "discokey:f3f4cc194a00c26e6bd6ca6947a86ba8609fc759c469922205f1db9a5ab78c46",
|
||||
"Addresses": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"],
|
||||
"AllowedIPs": ["100.83.200.69/32", "fd7a:115c:a1e0::c537:c845/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58209",
|
||||
"10.65.0.27:58209",
|
||||
"172.17.0.1:58209",
|
||||
"172.18.0.1:58209",
|
||||
"172.19.0.1:58209"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-client",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 41378 },
|
||||
{ "Proto": "peerapi6", "Port": 41378 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-23T00:13:11.017324028Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:client"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-client",
|
||||
"ComputedNameWithHost": "tagged-client"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 301794218943819,
|
||||
"StableID": "neJag6dgM311CNTRL",
|
||||
"Name": "tagged-prod.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:54c79503322a5d0a9701ce19d11963cfff9c05667ac06ef976af86275ba7080e",
|
||||
"DiscoKey": "discokey:196d9d1d9f0e2d5c5da0dc70164b6752bf8ad896991b7038b2272cb0bf8bf630",
|
||||
"Addresses": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"],
|
||||
"AllowedIPs": ["100.103.8.15/32", "fd7a:115c:a1e0::5b37:80f/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:46099",
|
||||
"10.65.0.27:46099",
|
||||
"172.17.0.1:46099",
|
||||
"172.18.0.1:46099",
|
||||
"172.19.0.1:46099"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-prod",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 37678 },
|
||||
{ "Proto": "peerapi6", "Port": 37678 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:03:12.89283153Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:prod"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-prod",
|
||||
"ComputedNameWithHost": "tagged-prod"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 7728836216590060,
|
||||
"StableID": "nf4dJTRQM321CNTRL",
|
||||
"Name": "user-kris.tail78f774.ts.net.",
|
||||
"User": 4538565228176803,
|
||||
"Key": "nodekey:40d0f8f49fd519e4a4a2b7d278dcc8863254d4fb8b0219f1d1304cdd172e795f",
|
||||
"KeyExpiry": "2026-08-19T14:09:34Z",
|
||||
"DiscoKey": "discokey:ee276d29d944b727d1749cd3938f210d3c30f1e2d2644fed60632fc0a3c95066",
|
||||
"Addresses": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"AllowedIPs": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:36065",
|
||||
"10.65.0.27:36065",
|
||||
"172.17.0.1:36065",
|
||||
"172.18.0.1:36065",
|
||||
"172.19.0.1:36065"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user-kris",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 40159 },
|
||||
{ "Proto": "peerapi6", "Port": 40159 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:09:34.803901523Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user-kris",
|
||||
"ComputedNameWithHost": "user-kris"
|
||||
},
|
||||
"UserProfile": { "ID": 4538565228176803, "LoginName": "kristoffer@dalby.cc", "DisplayName": "kristoffer" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1840115676059256,
|
||||
"StableID": "nFzZ7giPNF11CNTRL",
|
||||
"Name": "user-mon.tail78f774.ts.net.",
|
||||
"User": 3982058329734709,
|
||||
"Key": "nodekey:1ca6cca66d2b3811ec290c2f7ac30125c3568e19e303a8e30f6b165c9ee75a51",
|
||||
"KeyExpiry": "2026-08-19T14:09:00Z",
|
||||
"DiscoKey": "discokey:0fe29575d3fe2b01154e0d8f5b8fa1d2500a55fd2aa79a416f014f4c1e217e7b",
|
||||
"Addresses": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"AllowedIPs": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:49306",
|
||||
"10.65.0.27:49306",
|
||||
"172.17.0.1:49306",
|
||||
"172.18.0.1:49306",
|
||||
"172.19.0.1:49306"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user-mon",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 33201 },
|
||||
{ "Proto": "peerapi6", "Port": 33201 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-02-20T14:09:00.203639664Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user-mon",
|
||||
"ComputedNameWithHost": "user-mon"
|
||||
},
|
||||
"UserProfile": {
|
||||
"ID": 3982058329734709,
|
||||
"LoginName": "monitorpasskeykradalby@passkey",
|
||||
"DisplayName": "monitorpasskeykradalby"
|
||||
},
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 539541576444929,
|
||||
"StableID": "nSq9YrqMD511CNTRL",
|
||||
"Name": "user1.tail78f774.ts.net.",
|
||||
"User": 4156223528223174,
|
||||
"Key": "nodekey:96338a2cd2ea803c915ed8fdf882d66ca0c6a59d0fcf0bc4b3f928d22d1ac743",
|
||||
"KeyExpiry": "2026-07-22T10:04:13Z",
|
||||
"DiscoKey": "discokey:e9a76408333d29ad7c495ff79483f15d0bae079bfebc20cffa35af12fe848518",
|
||||
"Addresses": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"AllowedIPs": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:59336",
|
||||
"10.65.0.27:59336",
|
||||
"172.17.0.1:59336",
|
||||
"172.18.0.1:59336",
|
||||
"172.19.0.1:59336"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "user1",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46708 },
|
||||
{ "Proto": "peerapi6", "Port": 46708 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:04:13.531671894Z",
|
||||
"Cap": 131,
|
||||
"Online": true,
|
||||
"ComputedName": "user1",
|
||||
"ComputedNameWithHost": "user1"
|
||||
},
|
||||
"UserProfile": { "ID": 4156223528223174, "LoginName": "kratail2tid@passkey", "DisplayName": "kratail2tid" },
|
||||
"CapMap": null
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": {
|
||||
"Node": {
|
||||
"ID": 1440249486084758,
|
||||
"StableID": "nXRbBtuHFC11CNTRL",
|
||||
"Name": "tagged-server.tail78f774.ts.net.",
|
||||
"User": 1260082990019555,
|
||||
"Key": "nodekey:7d5c34b3e8082069d0a82838165c33f8e1b5eb32c6211c2d23d4fe8fb9ec4a19",
|
||||
"DiscoKey": "discokey:372ff501f45d63e009ed97902f8b3acf6addd79e9c6ca7343d41c7adc4eb3e38",
|
||||
"Addresses": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"AllowedIPs": ["100.108.74.26/32", "fd7a:115c:a1e0::b901:4a87/128"],
|
||||
"Endpoints": [
|
||||
"77.164.248.136:58686",
|
||||
"10.65.0.27:58686",
|
||||
"172.17.0.1:58686",
|
||||
"172.18.0.1:58686",
|
||||
"172.19.0.1:58686"
|
||||
],
|
||||
"HomeDERP": 14,
|
||||
"Hostinfo": {
|
||||
"OS": "linux",
|
||||
"Hostname": "tagged-server",
|
||||
"Services": [
|
||||
{ "Proto": "peerapi4", "Port": 46499 },
|
||||
{ "Proto": "peerapi6", "Port": 46499 }
|
||||
]
|
||||
},
|
||||
"Created": "2026-01-23T10:10:26.365653609Z",
|
||||
"Cap": 131,
|
||||
"Tags": ["tag:server"],
|
||||
"Online": true,
|
||||
"ComputedName": "tagged-server",
|
||||
"ComputedNameWithHost": "tagged-server"
|
||||
},
|
||||
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
|
||||
"CapMap": null
|
||||
}
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
48
hscontrol/policy/v2/testdata/grant_results/GRANT-K7.json
vendored
Normal file
48
hscontrol/policy/v2/testdata/grant_results/GRANT-K7.json
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"test_id": "GRANT-K7",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T02:55:29Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "grant_policies/grant_k7.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["autogroup:danger-all"],
|
||||
"ip": ["tcp:22"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["*"], "dst": ["autogroup:danger-all"], "ip": ["tcp:22"] }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "cannot use autogroup:danger-all as a dst" }
|
||||
}
|
||||
}
|
||||
48
hscontrol/policy/v2/testdata/grant_results/GRANT-K8.json
vendored
Normal file
48
hscontrol/policy/v2/testdata/grant_results/GRANT-K8.json
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"test_id": "GRANT-K8",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T02:55:29Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "grant_policies/grant_k8.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["autogroup:danger-all"],
|
||||
"dst": ["autogroup:danger-all"],
|
||||
"ip": ["*"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["autogroup:danger-all"], "dst": ["autogroup:danger-all"], "ip": ["*"] }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "cannot use autogroup:danger-all as a dst" }
|
||||
}
|
||||
}
|
||||
50
hscontrol/policy/v2/testdata/grant_results/GRANT-K9.json
vendored
Normal file
50
hscontrol/policy/v2/testdata/grant_results/GRANT-K9.json
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"test_id": "GRANT-K9",
|
||||
"description": "",
|
||||
"timestamp": "2026-02-23T02:55:30Z",
|
||||
"error": true,
|
||||
"input": {
|
||||
"policy_file": "grant_policies/grant_k9.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["*"],
|
||||
"app": {
|
||||
"tailscale.com/cap/ingress": [{}]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["*"], "dst": ["*"], "app": { "tailscale.com/cap/ingress": [{}] } }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 400,
|
||||
"api_response_body": { "message": "capability name must not be in the tailscale.com domain" }
|
||||
}
|
||||
}
|
||||
2775
hscontrol/policy/v2/testdata/grant_results/GRANT-P01_1.json
vendored
Normal file
2775
hscontrol/policy/v2/testdata/grant_results/GRANT-P01_1.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1083
hscontrol/policy/v2/testdata/grant_results/GRANT-P01_2.json
vendored
Normal file
1083
hscontrol/policy/v2/testdata/grant_results/GRANT-P01_2.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
588
hscontrol/policy/v2/testdata/grant_results/GRANT-P01_3.json
vendored
Normal file
588
hscontrol/policy/v2/testdata/grant_results/GRANT-P01_3.json
vendored
Normal file
@@ -0,0 +1,588 @@
|
||||
{
|
||||
"test_id": "GRANT-P01_3",
|
||||
"timestamp": "2026-02-23T00:43:29Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p01_3.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["100.64.0.0/16"],
|
||||
"dst": ["*"],
|
||||
"ip": ["*"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["100.64.0.0/16"], "dst": ["*"], "ip": ["*"] }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{ "SrcIPs": ["100.64.0.0/16"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.64.0.0/16"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
|
||||
],
|
||||
"Caps": []
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{ "SrcIPs": ["100.64.0.0/16"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.64.0.0/16"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
|
||||
],
|
||||
"Caps": []
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{ "SrcIPs": ["100.64.0.0/16"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.64.0.0/16"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
|
||||
],
|
||||
"Caps": []
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{ "SrcIPs": ["100.64.0.0/16"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.64.0.0/16"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
|
||||
],
|
||||
"Caps": []
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{ "SrcIPs": ["100.64.0.0/16"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.64.0.0/16"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
|
||||
],
|
||||
"Caps": []
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{ "SrcIPs": ["100.64.0.0/16"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.64.0.0/16"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
|
||||
],
|
||||
"Caps": []
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{ "SrcIPs": ["100.64.0.0/16"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.64.0.0/16"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
|
||||
],
|
||||
"Caps": []
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": [
|
||||
{ "SrcIPs": ["100.64.0.0/16"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
|
||||
],
|
||||
"packet_filter_matches": [
|
||||
{
|
||||
"IPProto": [6, 17, 1, 58],
|
||||
"Srcs": ["100.64.0.0/16"],
|
||||
"SrcCaps": null,
|
||||
"Dsts": [
|
||||
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
|
||||
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
|
||||
],
|
||||
"Caps": []
|
||||
}
|
||||
],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1013
hscontrol/policy/v2/testdata/grant_results/GRANT-P01_4.json
vendored
Normal file
1013
hscontrol/policy/v2/testdata/grant_results/GRANT-P01_4.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
484
hscontrol/policy/v2/testdata/grant_results/GRANT-P01_5.json
vendored
Normal file
484
hscontrol/policy/v2/testdata/grant_results/GRANT-P01_5.json
vendored
Normal file
@@ -0,0 +1,484 @@
|
||||
{
|
||||
"test_id": "GRANT-P01_5",
|
||||
"timestamp": "2026-02-23T00:44:03Z",
|
||||
"propagation_wait_seconds": 15,
|
||||
"input": {
|
||||
"policy_file": "/home/kradalby/acl-explore/grant_policies/grant_p01_5.json",
|
||||
"full_policy": {
|
||||
"groups": {
|
||||
"group:admins": ["kratail2tid@passkey"],
|
||||
"group:developers": ["kristoffer@dalby.cc", "kratail2tid@passkey"],
|
||||
"group:monitors": ["monitorpasskeykradalby@passkey"],
|
||||
"group:empty": []
|
||||
},
|
||||
"tagOwners": {
|
||||
"tag:server": ["kratail2tid@passkey"],
|
||||
"tag:prod": ["kratail2tid@passkey"],
|
||||
"tag:client": ["kratail2tid@passkey"],
|
||||
"tag:router": ["kratail2tid@passkey"],
|
||||
"tag:exit": ["kratail2tid@passkey"]
|
||||
},
|
||||
"hosts": {
|
||||
"webserver": "100.108.74.26",
|
||||
"prodbox": "100.103.8.15",
|
||||
"internal": "10.0.0.0/8"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"grants": [
|
||||
{
|
||||
"src": ["*"],
|
||||
"dst": ["100.64.0.0/12"],
|
||||
"ip": ["*"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"grants_section": [{ "src": ["*"], "dst": ["100.64.0.0/12"], "ip": ["*"] }],
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_method": "POST",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"mts_name": "exit-node",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock",
|
||||
"hostname": "exit-node",
|
||||
"user_id": 4041918547170221,
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"mts_name": "subnet-router",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock",
|
||||
"hostname": "subnet-router",
|
||||
"user_id": 7489538288452506,
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"mts_name": "tagged-client",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock",
|
||||
"hostname": "tagged-client",
|
||||
"user_id": 4031348162889210,
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"mts_name": "tagged-prod",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock",
|
||||
"hostname": "tagged-prod",
|
||||
"user_id": 301794218943819,
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"mts_name": "tagged-server",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock",
|
||||
"hostname": "tagged-server",
|
||||
"user_id": 1440249486084758,
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"mts_name": "user-kris",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock",
|
||||
"hostname": "user-kris",
|
||||
"user_id": 4538565228176803,
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"mts_name": "user-mon",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock",
|
||||
"hostname": "user-mon",
|
||||
"user_id": 3982058329734709,
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"mts_name": "user1",
|
||||
"socket": "/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock",
|
||||
"hostname": "user1",
|
||||
"user_id": 4156223528223174,
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/exit-node/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"subnet-router": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/subnet-router/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-client": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-client/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-prod": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-prod/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"tagged-server": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/tagged-server/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-kris": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-kris/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user-mon": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.90.199.68": {
|
||||
"peer_name": "user1",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user-mon/tailscaled.sock whois --json 100.90.199.68",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"user1": {
|
||||
"commands": {
|
||||
"packet_filter_rules": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-rules",
|
||||
"packet_filter_matches": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock debug localapi POST debug-packet-filter-matches"
|
||||
},
|
||||
"packet_filter_rules": null,
|
||||
"packet_filter_matches": [],
|
||||
"whois": {
|
||||
"100.85.66.106": {
|
||||
"peer_name": "exit-node",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.85.66.106",
|
||||
"response": null
|
||||
},
|
||||
"100.92.142.61": {
|
||||
"peer_name": "subnet-router",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.92.142.61",
|
||||
"response": null
|
||||
},
|
||||
"100.83.200.69": {
|
||||
"peer_name": "tagged-client",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.83.200.69",
|
||||
"response": null
|
||||
},
|
||||
"100.103.8.15": {
|
||||
"peer_name": "tagged-prod",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.8.15",
|
||||
"response": null
|
||||
},
|
||||
"100.108.74.26": {
|
||||
"peer_name": "tagged-server",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.108.74.26",
|
||||
"response": null
|
||||
},
|
||||
"100.110.121.96": {
|
||||
"peer_name": "user-kris",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.110.121.96",
|
||||
"response": null
|
||||
},
|
||||
"100.103.90.82": {
|
||||
"peer_name": "user-mon",
|
||||
"command": "/home/kradalby/go/bin/tailscale --socket=/home/kradalby/.config/multi-tailscale-dev/user1/tailscaled.sock whois --json 100.103.90.82",
|
||||
"response": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user