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

@ -51,7 +51,14 @@
"src": ["autogroup:member"],
"dst": ["autogroup:self"],
"ip": ["*"],
"app": { "tailscale.com/cap/drive": [{ "shares": ["*"], "access": "rw" }] }
"app": {
"tailscale.com/cap/drive": [
{
"shares": ["*"],
"access": "rw"
}
]
}
}
],
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
@ -76,7 +83,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",
@ -369,16 +378,19 @@
{
"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" }] }
"IP": "100.110.121.96",
"Ports": {
"First": 0,
"Last": 65535
}
},
{
"IP": "fd7a:115c:a1e0::1737:7960",
"Ports": {
"First": 0,
"Last": 65535
}
}
]
},
@ -387,7 +399,25 @@
"CapGrant": [
{
"Dsts": ["100.110.121.96/32", "fd7a:115c:a1e0::1737:7960/128"],
"CapMap": { "tailscale.com/cap/drive-sharer": null }
"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
}
}
]
}
@ -398,8 +428,20 @@
"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 } }
{
"Net": "100.110.121.96/32",
"Ports": {
"First": 0,
"Last": 65535
}
},
{
"Net": "fd7a:115c:a1e0::1737:7960/128",
"Ports": {
"First": 0,
"Last": 65535
}
}
],
"Caps": []
},
@ -412,12 +454,22 @@
{
"Dst": "100.110.121.96/32",
"Cap": "tailscale.com/cap/drive",
"Values": [{ "shares": ["*"], "access": "rw" }]
"Values": [
{
"shares": ["*"],
"access": "rw"
}
]
},
{
"Dst": "fd7a:115c:a1e0::1737:7960/128",
"Cap": "tailscale.com/cap/drive",
"Values": [{ "shares": ["*"], "access": "rw" }]
"Values": [
{
"shares": ["*"],
"access": "rw"
}
]
}
]
},
@ -427,8 +479,16 @@
"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 }
{
"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
}
]
}
],
@ -479,16 +539,19 @@
{
"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" }] }
"IP": "100.103.90.82",
"Ports": {
"First": 0,
"Last": 65535
}
},
{
"IP": "fd7a:115c:a1e0::9e37:5a52",
"Ports": {
"First": 0,
"Last": 65535
}
}
]
},
@ -497,7 +560,25 @@
"CapGrant": [
{
"Dsts": ["100.103.90.82/32", "fd7a:115c:a1e0::9e37:5a52/128"],
"CapMap": { "tailscale.com/cap/drive-sharer": null }
"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
}
}
]
}
@ -508,8 +589,20 @@
"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 } }
{
"Net": "100.103.90.82/32",
"Ports": {
"First": 0,
"Last": 65535
}
},
{
"Net": "fd7a:115c:a1e0::9e37:5a52/128",
"Ports": {
"First": 0,
"Last": 65535
}
}
],
"Caps": []
},
@ -522,12 +615,22 @@
{
"Dst": "100.103.90.82/32",
"Cap": "tailscale.com/cap/drive",
"Values": [{ "shares": ["*"], "access": "rw" }]
"Values": [
{
"shares": ["*"],
"access": "rw"
}
]
},
{
"Dst": "fd7a:115c:a1e0::9e37:5a52/128",
"Cap": "tailscale.com/cap/drive",
"Values": [{ "shares": ["*"], "access": "rw" }]
"Values": [
{
"shares": ["*"],
"access": "rw"
}
]
}
]
},
@ -537,8 +640,16 @@
"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 }
{
"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
}
]
}
],
@ -589,16 +700,19 @@
{
"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" }] }
"IP": "100.90.199.68",
"Ports": {
"First": 0,
"Last": 65535
}
},
{
"IP": "fd7a:115c:a1e0::2d01:c747",
"Ports": {
"First": 0,
"Last": 65535
}
}
]
},
@ -607,7 +721,25 @@
"CapGrant": [
{
"Dsts": ["100.90.199.68/32", "fd7a:115c:a1e0::2d01:c747/128"],
"CapMap": { "tailscale.com/cap/drive-sharer": null }
"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
}
}
]
}
@ -618,8 +750,20 @@
"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 } }
{
"Net": "100.90.199.68/32",
"Ports": {
"First": 0,
"Last": 65535
}
},
{
"Net": "fd7a:115c:a1e0::2d01:c747/128",
"Ports": {
"First": 0,
"Last": 65535
}
}
],
"Caps": []
},
@ -632,12 +776,22 @@
{
"Dst": "100.90.199.68/32",
"Cap": "tailscale.com/cap/drive",
"Values": [{ "shares": ["*"], "access": "rw" }]
"Values": [
{
"shares": ["*"],
"access": "rw"
}
]
},
{
"Dst": "fd7a:115c:a1e0::2d01:c747/128",
"Cap": "tailscale.com/cap/drive",
"Values": [{ "shares": ["*"], "access": "rw" }]
"Values": [
{
"shares": ["*"],
"access": "rw"
}
]
}
]
},
@ -647,8 +801,16 @@
"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 }
{
"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
}
]
}
],