mirror of
https://github.com/juanfont/headscale.git
synced 2026-04-26 10:38:42 +02:00
hscontrol/policy/v2: replace ACL golden data with Tailscale SaaS captures
Replace the headscale-adapted ACL golden files with authoritative captures from Tailscale SaaS using the 8-node grant topology. The golden data was captured via debug-packet-filter-rules (FilterRule wire format) from each of the 8 nodes after pushing each ACL policy to the Tailscale API. This gives us the exact format Tailscale sends to clients: - SrcIPs use IP ranges (100.64.0.0-100.115.91.255) not CIDRs - SrcIPs include subnet routes (10.33.0.0/16) for wildcard sources - IPProto is omitted for default all-protocol rules - DstPorts use bare IPs without /32 suffix - Identity aliases include both IPv4 and IPv6 addresses The test driver is updated to use the 8-node topology (3 users, 5 tagged nodes) matching the grant compat tests, with the same email conversion (kratail2tid@passkey -> @example.com). 215 test cases: 199 success + 16 error (captured from API 400s). All captured from Tailscale SaaS, no headscale-adapted values. Updates #2180
This commit is contained in:
168
hscontrol/policy/v2/testdata/acl_results/ACL-R02.json
vendored
Normal file
168
hscontrol/policy/v2/testdata/acl_results/ACL-R02.json
vendored
Normal file
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"test_id": "ACL-R02",
|
||||
"timestamp": "2026-03-17T14:41:01Z",
|
||||
"propagation_wait_seconds": 10,
|
||||
"input": {
|
||||
"policy_file": "acl_policies/acl_r02.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",
|
||||
"subnet24": "192.168.1.0/24"
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": {
|
||||
"10.33.0.0/16": ["tag:router"],
|
||||
"0.0.0.0/0": ["tag:exit"],
|
||||
"::/0": ["tag:exit"]
|
||||
}
|
||||
},
|
||||
"acls": [
|
||||
{
|
||||
"action": "accept",
|
||||
"src": ["tag:client"],
|
||||
"dst": ["tag:server:22"]
|
||||
},
|
||||
{
|
||||
"action": "accept",
|
||||
"src": ["tag:client"],
|
||||
"dst": ["tag:prod:5432"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"api_endpoint": "https://api.tailscale.com/api/v2/tailnet/kratail2tid%40passkey/acl",
|
||||
"api_response_code": 200
|
||||
},
|
||||
"topology": {
|
||||
"nodes": {
|
||||
"exit-node": {
|
||||
"hostname": "exit-node",
|
||||
"tags": ["tag:exit"],
|
||||
"ipv4": "100.85.66.106",
|
||||
"ipv6": "fd7a:115c:a1e0::7c37:426a"
|
||||
},
|
||||
"subnet-router": {
|
||||
"hostname": "subnet-router",
|
||||
"tags": ["tag:router"],
|
||||
"ipv4": "100.92.142.61",
|
||||
"ipv6": "fd7a:115c:a1e0::3e37:8e3d"
|
||||
},
|
||||
"tagged-client": {
|
||||
"hostname": "tagged-client",
|
||||
"tags": ["tag:client"],
|
||||
"ipv4": "100.83.200.69",
|
||||
"ipv6": "fd7a:115c:a1e0::c537:c845"
|
||||
},
|
||||
"tagged-prod": {
|
||||
"hostname": "tagged-prod",
|
||||
"tags": ["tag:prod"],
|
||||
"ipv4": "100.103.8.15",
|
||||
"ipv6": "fd7a:115c:a1e0::5b37:80f"
|
||||
},
|
||||
"tagged-server": {
|
||||
"hostname": "tagged-server",
|
||||
"tags": ["tag:server"],
|
||||
"ipv4": "100.108.74.26",
|
||||
"ipv6": "fd7a:115c:a1e0::b901:4a87"
|
||||
},
|
||||
"user-kris": {
|
||||
"hostname": "user-kris",
|
||||
"tags": [],
|
||||
"ipv4": "100.110.121.96",
|
||||
"ipv6": "fd7a:115c:a1e0::1737:7960"
|
||||
},
|
||||
"user-mon": {
|
||||
"hostname": "user-mon",
|
||||
"tags": [],
|
||||
"ipv4": "100.103.90.82",
|
||||
"ipv6": "fd7a:115c:a1e0::9e37:5a52"
|
||||
},
|
||||
"user1": {
|
||||
"hostname": "user1",
|
||||
"tags": [],
|
||||
"ipv4": "100.90.199.68",
|
||||
"ipv6": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captures": {
|
||||
"exit-node": {
|
||||
"packet_filter_rules": null
|
||||
},
|
||||
"subnet-router": {
|
||||
"packet_filter_rules": null
|
||||
},
|
||||
"tagged-client": {
|
||||
"packet_filter_rules": null
|
||||
},
|
||||
"tagged-prod": {
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.83.200.69", "fd7a:115c:a1e0::c537:c845"],
|
||||
"DstPorts": [
|
||||
{
|
||||
"IP": "100.103.8.15",
|
||||
"Ports": {
|
||||
"First": 5432,
|
||||
"Last": 5432
|
||||
}
|
||||
},
|
||||
{
|
||||
"IP": "fd7a:115c:a1e0::5b37:80f",
|
||||
"Ports": {
|
||||
"First": 5432,
|
||||
"Last": 5432
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"tagged-server": {
|
||||
"packet_filter_rules": [
|
||||
{
|
||||
"SrcIPs": ["100.83.200.69", "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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"user-kris": {
|
||||
"packet_filter_rules": null
|
||||
},
|
||||
"user-mon": {
|
||||
"packet_filter_rules": null
|
||||
},
|
||||
"user1": {
|
||||
"packet_filter_rules": null
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user