policy/v2: add advertised routes to compat test topologies

Add routable_ips and approved_routes fields to the node topology
definitions in all golden test files. These represent the subnet
routes actually advertised by nodes on the Tailscale SaaS network
during data capture:

  Routes topology (92 files, 6 router nodes):
    big-router:     10.0.0.0/8
    subnet-router:  10.33.0.0/16
    ha-router1:     192.168.1.0/24
    ha-router2:     192.168.1.0/24
    multi-router:   172.16.0.0/24
    exit-node:      0.0.0.0/0, ::/0

  ACL topology (199 files, 1 router node):
    subnet-router:  10.33.0.0/16

  Grants topology (203 files, 1 router node):
    subnet-router:  10.33.0.0/16

The route assignments were deduced from the golden data by analyzing
which router nodes receive FilterRules for which destination CIDRs
across all test files, and cross-referenced with the MTS setup
script (setup_grant_nodes.sh).

Updates #2180
This commit is contained in:
Kristoffer Dalby 2026-03-18 13:40:19 +00:00
parent 927ce418d2
commit 995ed0187c
494 changed files with 76022 additions and 15770 deletions

View file

@ -38,7 +38,13 @@
}
]
},
"grants_section": [{ "src": ["webserver"], "dst": ["*"], "ip": ["*"] }],
"grants_section": [
{
"src": ["webserver"],
"dst": ["*"],
"ip": ["*"]
}
],
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
"api_method": "POST",
"api_response_code": 200
@ -61,7 +67,9 @@
"user_id": 7489538288452506,
"tags": ["tag:router"],
"ipv4": "100.92.142.61",
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
"ipv6": "fd7a:115c:a1e0::3e37:8e3d",
"routable_ips": ["10.33.0.0/16"],
"approved_routes": ["10.33.0.0/16"]
},
"tagged-client": {
"mts_name": "tagged-client",
@ -126,7 +134,18 @@
"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.108.74.26"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
{
"SrcIPs": ["100.108.74.26"],
"DstPorts": [
{
"IP": "*",
"Ports": {
"First": 0,
"Last": 65535
}
}
]
}
],
"packet_filter_matches": [
{
@ -134,8 +153,20 @@
"Srcs": ["100.108.74.26/32"],
"SrcCaps": null,
"Dsts": [
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
{
"Net": "0.0.0.0/0",
"Ports": {
"First": 0,
"Last": 65535
}
},
{
"Net": "::/0",
"Ports": {
"First": 0,
"Last": 65535
}
}
],
"Caps": []
}
@ -181,8 +212,14 @@
"OS": "linux",
"Hostname": "tagged-server",
"Services": [
{ "Proto": "peerapi4", "Port": 46499 },
{ "Proto": "peerapi6", "Port": 46499 }
{
"Proto": "peerapi4",
"Port": 46499
},
{
"Proto": "peerapi6",
"Port": 46499
}
]
},
"Created": "2026-01-23T10:10:26.365653609Z",
@ -192,7 +229,11 @@
"ComputedName": "tagged-server",
"ComputedNameWithHost": "tagged-server"
},
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
"UserProfile": {
"ID": 1260082990019555,
"LoginName": "tagged-devices",
"DisplayName": "Tagged Devices"
},
"CapMap": null
}
},
@ -219,7 +260,18 @@
"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.108.74.26"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
{
"SrcIPs": ["100.108.74.26"],
"DstPorts": [
{
"IP": "*",
"Ports": {
"First": 0,
"Last": 65535
}
}
]
}
],
"packet_filter_matches": [
{
@ -227,8 +279,20 @@
"Srcs": ["100.108.74.26/32"],
"SrcCaps": null,
"Dsts": [
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
{
"Net": "0.0.0.0/0",
"Ports": {
"First": 0,
"Last": 65535
}
},
{
"Net": "::/0",
"Ports": {
"First": 0,
"Last": 65535
}
}
],
"Caps": []
}
@ -274,8 +338,14 @@
"OS": "linux",
"Hostname": "tagged-server",
"Services": [
{ "Proto": "peerapi4", "Port": 46499 },
{ "Proto": "peerapi6", "Port": 46499 }
{
"Proto": "peerapi4",
"Port": 46499
},
{
"Proto": "peerapi6",
"Port": 46499
}
]
},
"Created": "2026-01-23T10:10:26.365653609Z",
@ -285,7 +355,11 @@
"ComputedName": "tagged-server",
"ComputedNameWithHost": "tagged-server"
},
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
"UserProfile": {
"ID": 1260082990019555,
"LoginName": "tagged-devices",
"DisplayName": "Tagged Devices"
},
"CapMap": null
}
},
@ -312,7 +386,18 @@
"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.108.74.26"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
{
"SrcIPs": ["100.108.74.26"],
"DstPorts": [
{
"IP": "*",
"Ports": {
"First": 0,
"Last": 65535
}
}
]
}
],
"packet_filter_matches": [
{
@ -320,8 +405,20 @@
"Srcs": ["100.108.74.26/32"],
"SrcCaps": null,
"Dsts": [
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
{
"Net": "0.0.0.0/0",
"Ports": {
"First": 0,
"Last": 65535
}
},
{
"Net": "::/0",
"Ports": {
"First": 0,
"Last": 65535
}
}
],
"Caps": []
}
@ -367,8 +464,14 @@
"OS": "linux",
"Hostname": "tagged-server",
"Services": [
{ "Proto": "peerapi4", "Port": 46499 },
{ "Proto": "peerapi6", "Port": 46499 }
{
"Proto": "peerapi4",
"Port": 46499
},
{
"Proto": "peerapi6",
"Port": 46499
}
]
},
"Created": "2026-01-23T10:10:26.365653609Z",
@ -378,7 +481,11 @@
"ComputedName": "tagged-server",
"ComputedNameWithHost": "tagged-server"
},
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
"UserProfile": {
"ID": 1260082990019555,
"LoginName": "tagged-devices",
"DisplayName": "Tagged Devices"
},
"CapMap": null
}
},
@ -405,7 +512,18 @@
"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.108.74.26"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
{
"SrcIPs": ["100.108.74.26"],
"DstPorts": [
{
"IP": "*",
"Ports": {
"First": 0,
"Last": 65535
}
}
]
}
],
"packet_filter_matches": [
{
@ -413,8 +531,20 @@
"Srcs": ["100.108.74.26/32"],
"SrcCaps": null,
"Dsts": [
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
{
"Net": "0.0.0.0/0",
"Ports": {
"First": 0,
"Last": 65535
}
},
{
"Net": "::/0",
"Ports": {
"First": 0,
"Last": 65535
}
}
],
"Caps": []
}
@ -460,8 +590,14 @@
"OS": "linux",
"Hostname": "tagged-server",
"Services": [
{ "Proto": "peerapi4", "Port": 46499 },
{ "Proto": "peerapi6", "Port": 46499 }
{
"Proto": "peerapi4",
"Port": 46499
},
{
"Proto": "peerapi6",
"Port": 46499
}
]
},
"Created": "2026-01-23T10:10:26.365653609Z",
@ -471,7 +607,11 @@
"ComputedName": "tagged-server",
"ComputedNameWithHost": "tagged-server"
},
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
"UserProfile": {
"ID": 1260082990019555,
"LoginName": "tagged-devices",
"DisplayName": "Tagged Devices"
},
"CapMap": null
}
},
@ -498,7 +638,18 @@
"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.108.74.26"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
{
"SrcIPs": ["100.108.74.26"],
"DstPorts": [
{
"IP": "*",
"Ports": {
"First": 0,
"Last": 65535
}
}
]
}
],
"packet_filter_matches": [
{
@ -506,8 +657,20 @@
"Srcs": ["100.108.74.26/32"],
"SrcCaps": null,
"Dsts": [
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
{
"Net": "0.0.0.0/0",
"Ports": {
"First": 0,
"Last": 65535
}
},
{
"Net": "::/0",
"Ports": {
"First": 0,
"Last": 65535
}
}
],
"Caps": []
}
@ -538,8 +701,14 @@
"OS": "linux",
"Hostname": "exit-node",
"Services": [
{ "Proto": "peerapi4", "Port": 37000 },
{ "Proto": "peerapi6", "Port": 37000 }
{
"Proto": "peerapi4",
"Port": 37000
},
{
"Proto": "peerapi6",
"Port": 37000
}
]
},
"Created": "2026-02-23T00:13:20.566112173Z",
@ -549,7 +718,11 @@
"ComputedName": "exit-node",
"ComputedNameWithHost": "exit-node"
},
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
"UserProfile": {
"ID": 1260082990019555,
"LoginName": "tagged-devices",
"DisplayName": "Tagged Devices"
},
"CapMap": null
}
},
@ -578,8 +751,14 @@
"OS": "linux",
"Hostname": "subnet-router",
"Services": [
{ "Proto": "peerapi4", "Port": 63250 },
{ "Proto": "peerapi6", "Port": 63250 }
{
"Proto": "peerapi4",
"Port": 63250
},
{
"Proto": "peerapi6",
"Port": 63250
}
]
},
"Created": "2026-02-23T00:13:15.731478784Z",
@ -590,7 +769,11 @@
"ComputedName": "subnet-router",
"ComputedNameWithHost": "subnet-router"
},
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
"UserProfile": {
"ID": 1260082990019555,
"LoginName": "tagged-devices",
"DisplayName": "Tagged Devices"
},
"CapMap": null
}
},
@ -619,8 +802,14 @@
"OS": "linux",
"Hostname": "tagged-client",
"Services": [
{ "Proto": "peerapi4", "Port": 41378 },
{ "Proto": "peerapi6", "Port": 41378 }
{
"Proto": "peerapi4",
"Port": 41378
},
{
"Proto": "peerapi6",
"Port": 41378
}
]
},
"Created": "2026-02-23T00:13:11.017324028Z",
@ -630,7 +819,11 @@
"ComputedName": "tagged-client",
"ComputedNameWithHost": "tagged-client"
},
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
"UserProfile": {
"ID": 1260082990019555,
"LoginName": "tagged-devices",
"DisplayName": "Tagged Devices"
},
"CapMap": null
}
},
@ -659,8 +852,14 @@
"OS": "linux",
"Hostname": "tagged-prod",
"Services": [
{ "Proto": "peerapi4", "Port": 37678 },
{ "Proto": "peerapi6", "Port": 37678 }
{
"Proto": "peerapi4",
"Port": 37678
},
{
"Proto": "peerapi6",
"Port": 37678
}
]
},
"Created": "2026-02-20T14:03:12.89283153Z",
@ -670,7 +869,11 @@
"ComputedName": "tagged-prod",
"ComputedNameWithHost": "tagged-prod"
},
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
"UserProfile": {
"ID": 1260082990019555,
"LoginName": "tagged-devices",
"DisplayName": "Tagged Devices"
},
"CapMap": null
}
},
@ -700,8 +903,14 @@
"OS": "linux",
"Hostname": "user-kris",
"Services": [
{ "Proto": "peerapi4", "Port": 40159 },
{ "Proto": "peerapi6", "Port": 40159 }
{
"Proto": "peerapi4",
"Port": 40159
},
{
"Proto": "peerapi6",
"Port": 40159
}
]
},
"Created": "2026-02-20T14:09:34.803901523Z",
@ -710,7 +919,11 @@
"ComputedName": "user-kris",
"ComputedNameWithHost": "user-kris"
},
"UserProfile": { "ID": 4538565228176803, "LoginName": "kristoffer@dalby.cc", "DisplayName": "kristoffer" },
"UserProfile": {
"ID": 4538565228176803,
"LoginName": "kristoffer@dalby.cc",
"DisplayName": "kristoffer"
},
"CapMap": null
}
},
@ -740,8 +953,14 @@
"OS": "linux",
"Hostname": "user-mon",
"Services": [
{ "Proto": "peerapi4", "Port": 33201 },
{ "Proto": "peerapi6", "Port": 33201 }
{
"Proto": "peerapi4",
"Port": 33201
},
{
"Proto": "peerapi6",
"Port": 33201
}
]
},
"Created": "2026-02-20T14:09:00.203639664Z",
@ -784,8 +1003,14 @@
"OS": "linux",
"Hostname": "user1",
"Services": [
{ "Proto": "peerapi4", "Port": 46708 },
{ "Proto": "peerapi6", "Port": 46708 }
{
"Proto": "peerapi4",
"Port": 46708
},
{
"Proto": "peerapi6",
"Port": 46708
}
]
},
"Created": "2026-01-23T10:04:13.531671894Z",
@ -794,7 +1019,11 @@
"ComputedName": "user1",
"ComputedNameWithHost": "user1"
},
"UserProfile": { "ID": 4156223528223174, "LoginName": "kratail2tid@passkey", "DisplayName": "kratail2tid" },
"UserProfile": {
"ID": 4156223528223174,
"LoginName": "kratail2tid@passkey",
"DisplayName": "kratail2tid"
},
"CapMap": null
}
}
@ -806,7 +1035,18 @@
"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.108.74.26"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
{
"SrcIPs": ["100.108.74.26"],
"DstPorts": [
{
"IP": "*",
"Ports": {
"First": 0,
"Last": 65535
}
}
]
}
],
"packet_filter_matches": [
{
@ -814,8 +1054,20 @@
"Srcs": ["100.108.74.26/32"],
"SrcCaps": null,
"Dsts": [
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
{
"Net": "0.0.0.0/0",
"Ports": {
"First": 0,
"Last": 65535
}
},
{
"Net": "::/0",
"Ports": {
"First": 0,
"Last": 65535
}
}
],
"Caps": []
}
@ -866,8 +1118,14 @@
"OS": "linux",
"Hostname": "tagged-server",
"Services": [
{ "Proto": "peerapi4", "Port": 46499 },
{ "Proto": "peerapi6", "Port": 46499 }
{
"Proto": "peerapi4",
"Port": 46499
},
{
"Proto": "peerapi6",
"Port": 46499
}
]
},
"Created": "2026-01-23T10:10:26.365653609Z",
@ -877,7 +1135,11 @@
"ComputedName": "tagged-server",
"ComputedNameWithHost": "tagged-server"
},
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
"UserProfile": {
"ID": 1260082990019555,
"LoginName": "tagged-devices",
"DisplayName": "Tagged Devices"
},
"CapMap": null
}
},
@ -899,7 +1161,18 @@
"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.108.74.26"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
{
"SrcIPs": ["100.108.74.26"],
"DstPorts": [
{
"IP": "*",
"Ports": {
"First": 0,
"Last": 65535
}
}
]
}
],
"packet_filter_matches": [
{
@ -907,8 +1180,20 @@
"Srcs": ["100.108.74.26/32"],
"SrcCaps": null,
"Dsts": [
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
{
"Net": "0.0.0.0/0",
"Ports": {
"First": 0,
"Last": 65535
}
},
{
"Net": "::/0",
"Ports": {
"First": 0,
"Last": 65535
}
}
],
"Caps": []
}
@ -959,8 +1244,14 @@
"OS": "linux",
"Hostname": "tagged-server",
"Services": [
{ "Proto": "peerapi4", "Port": 46499 },
{ "Proto": "peerapi6", "Port": 46499 }
{
"Proto": "peerapi4",
"Port": 46499
},
{
"Proto": "peerapi6",
"Port": 46499
}
]
},
"Created": "2026-01-23T10:10:26.365653609Z",
@ -970,7 +1261,11 @@
"ComputedName": "tagged-server",
"ComputedNameWithHost": "tagged-server"
},
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
"UserProfile": {
"ID": 1260082990019555,
"LoginName": "tagged-devices",
"DisplayName": "Tagged Devices"
},
"CapMap": null
}
},
@ -992,7 +1287,18 @@
"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.108.74.26"], "DstPorts": [{ "IP": "*", "Ports": { "First": 0, "Last": 65535 } }] }
{
"SrcIPs": ["100.108.74.26"],
"DstPorts": [
{
"IP": "*",
"Ports": {
"First": 0,
"Last": 65535
}
}
]
}
],
"packet_filter_matches": [
{
@ -1000,8 +1306,20 @@
"Srcs": ["100.108.74.26/32"],
"SrcCaps": null,
"Dsts": [
{ "Net": "0.0.0.0/0", "Ports": { "First": 0, "Last": 65535 } },
{ "Net": "::/0", "Ports": { "First": 0, "Last": 65535 } }
{
"Net": "0.0.0.0/0",
"Ports": {
"First": 0,
"Last": 65535
}
},
{
"Net": "::/0",
"Ports": {
"First": 0,
"Last": 65535
}
}
],
"Caps": []
}
@ -1052,8 +1370,14 @@
"OS": "linux",
"Hostname": "tagged-server",
"Services": [
{ "Proto": "peerapi4", "Port": 46499 },
{ "Proto": "peerapi6", "Port": 46499 }
{
"Proto": "peerapi4",
"Port": 46499
},
{
"Proto": "peerapi6",
"Port": 46499
}
]
},
"Created": "2026-01-23T10:10:26.365653609Z",
@ -1063,7 +1387,11 @@
"ComputedName": "tagged-server",
"ComputedNameWithHost": "tagged-server"
},
"UserProfile": { "ID": 1260082990019555, "LoginName": "tagged-devices", "DisplayName": "Tagged Devices" },
"UserProfile": {
"ID": 1260082990019555,
"LoginName": "tagged-devices",
"DisplayName": "Tagged Devices"
},
"CapMap": null
}
},